|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门...
. H" H2 l" E9 u, d明天,对了就是明天 又少不了一顿臭骂...: i8 c0 t+ n' C- ^7 S! Y
) ?: {( y9 F" |" t百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,- B) c; O- _9 p' O
& D1 a) @/ Q4 [" ]+ | e' o+ F% K" R5 p& D+ o/ I
仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,
( E4 N9 K5 m! ]7 J& s瞎子过河改了第20行 print $2 不行,33行tail -n4也不行, P+ M5 F0 e* b) w; J8 e
菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下) H0 q# O# @ ]
& v% U5 R% U. I6 t+ U7 ], p
+ }# K: c' o% o; Z* j/ ?0 n! a" Y* X
7 ]! P; b8 c* q# J+ X+ d9 v" ?
1 z+ z% y$ z: V; r/ X, l, c7 q$ [
( A+ y5 d" s) b: w
- aliddnsipv6_ak="aliddns_id"
- H8 I" U8 v' u" v& {5 u - aliddnsipv6_sk="password_info"
5 k7 M4 t! s. [ - aliddnsipv6_name1='nas'
8 d% Q: l+ J! ?! O - aliddnsipv6_domain='mydomain.cn'
: |% l/ W: ~7 [1 d. W w/ B - aliddnsipv6_ttl="600"
7 |) ]6 t+ \0 D& U1 k4 N) g9 m6 V
" `- ?5 s4 x) w9 P( i9 V4 m7 h- if [ "$aliddnsipv6_name1" = "@" ]) q$ K( Q$ d9 e
- then
* I8 L( A8 F. Q* ~$ q - aliddnsipv6_name=$aliddnsipv6_domain# ~8 N; c+ |( z7 C* I: y
- else
) {0 N9 |, I k5 f6 W- c - aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
1 ]" p# d, g; s) [1 h2 _1 L - fi
4 y1 \) r5 K. b- C2 H - 3 U7 p' L5 y/ h9 `
- now=`date`
4 l+ @. t# D. W' W# q$ O
- x! Q0 m, k- ]2 I8 V- die () {
8 z: T" m3 w" Y8 @$ X; ~& g7 [, ~ - echo $16 G3 ?3 D' W6 s) Y3 T7 }
- }
3 J( @- n; l( J8 R: b" ]. @ - 2 T3 ^- x! f. n4 v. x- }5 D6 s
- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6"
( N8 W& Y% p, f+ G* a" X - % R6 J S1 X5 t2 Z/ w% @6 H4 f
- for ipv6 in $ipv6s: H5 T# q4 M) E5 m% L
- do
6 |9 S9 O9 y }& w1 P9 a; r - #ipv6 = $ipv6
2 N# n3 v; z3 x/ A- X - break
' o/ J4 A" ^. w- M - done
) Y/ g% B7 u- P1 ]8 F
& Z3 p& c b+ s1 k7 _- echo $ipv6
A! d, }: W- P* s) y
" V+ R0 W+ l& K: j- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`5 C# K2 t. w1 c8 @
- #echo $current_ipv6
/ @) Z+ l- R% Y9 j ?
. c! l! W+ N% {2 f- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`3 T9 i# A8 U7 }, `+ }9 [
- echo $current_ipv6
0 w' ]& ] M' |
. s6 I% j+ A- ?/ |- if [ "$?" -eq "0" ]
/ h ]5 D, p( H- M B8 \ - then$ d8 W# c1 s* M2 }) p; ?; \
- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`! V s% b# K7 o; ~9 X
- echo $current_ipv6
) M$ H6 m) Z5 b" Z* g9 a* f - 9 F3 m- {9 K5 Z/ ?& j
- if [ "$ipv6" = "$current_ipv6" ]
: F2 j, y/ w+ ~7 S3 X) P; ` - then/ c! e/ j* z" Y) w$ s, z2 T
- echo "skipping"' X' D3 L) F ~; Q
- fi ; }0 `% Z6 l7 g2 l+ b
- # fix when A record removed by manual dns is always update error
. y+ {0 g& f$ w" }5 q - else- H( z; J: ?( T. T
- unset aliddnsipv6_record_id
$ ]9 c4 _- G6 z1 ?" L - fi2 G) `* `2 h0 m; F7 e$ r
- % p) e6 F6 \# p5 W& n" E! N: ?
- o5 y& y' b8 e& y, g/ l- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`# s6 s, ?$ U9 e/ }, Q+ d4 T: h$ i
& R* R8 {' q3 p& q6 T8 {, n4 _2 p- 2 g. S' G/ w' [
- urlencode() {
: z# [" K* C# _. @6 R9 ]% c - # urlencode <string>3 w j' w/ M- z% T1 }, y
- out=""
- N! c) s6 E, y9 X, h7 L6 e! [ - while read -n1 c% R: P8 w9 D- p) ~$ h
- do
% R0 L& w0 C; o* b1 v6 \/ W$ m - case $c in4 p9 ~9 D. j/ Z0 f) ?6 G
- [a-zA-Z0-9._-]) out="$out$c" ;;- u( s5 F f6 [# d2 B" L% ?! |
- *) out="$out`printf '%%%02X' "'$c"`" ;;1 d+ G* N" z0 a6 y* j L
- esac
* b; ~+ u7 M* y - done) M+ a3 \) d: Q! a
- echo -n $out
0 S, f" a- X) e: F - }. x8 H: v! u% I, m
" g6 w$ K3 {4 B7 O& v" \2 `5 W: B- enc() {
& v6 Y6 X9 V4 F# v6 O - echo -n "$1" | urlencode% y# i+ m1 T3 \2 r2 n4 p/ v s
- }
4 ]# R" S0 g# ~. D
8 {0 g8 i5 ~- W4 ^! a) B- send_request() {
* k- V4 } l9 h& ~7 p1 ~. D6 u - local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09"
5 U6 G2 | @8 A3 g - local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)5 i) K7 H( y1 ]
- curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"' D, W8 {$ v( K# d: o( W. @/ ~
- }
5 {# P0 w+ E! K5 o4 k
9 J5 y& s: f4 ^' G2 b- get_recordid() {
- \$ p3 N& F% b& W z& S1 y6 n+ M - grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
$ r& i# y5 g( X1 S( t* y/ @2 C5 R - }4 ]( g+ C7 x9 a! _& Y* a# W0 z
. X% V/ ]+ l! E+ E$ l# F9 Z- v5 v9 X- query_recordid() {
9 K- V1 C& x; Z+ `9 ~0 Y: ` - send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA"
* R6 V9 m' B" h - }
! f+ ^; D" O( h+ _6 H( Y
. |/ Q( q9 i5 ^; S5 o, L- update_record() {
3 j" A; c% M( T: S8 p - send_request "UpdateDomainRecord" "RR=$aliddnsipv6_name1&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddnsipv6_ttl&Timestamp=$timestamp&Type=AAAA&Value=$(enc $ipv6)"
$ D* V4 Z9 A& ~% L - }
5 r" e+ F; ^1 s9 n$ a0 t
# S0 } m y' Y& Z: X8 D- add_record() {
# o1 t) a& m; b8 f$ X4 a7 s - send_request "AddDomainRecord&DomainName=$aliddnsipv6_domain" "RR=$aliddnsipv6_name1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddnsipv6_ttl&Timestamp=$timestamp&Type=AAAA&Value=$(enc $ipv6)"
- L" b b) [) w4 ]! j4 S5 W - }% p6 a1 W: x& q1 K! ]' Y& O
- z+ ^/ q- R9 `! d2 z- \* ]- #add support */%2A and @/%40 record
! X! h' V# z* W! m; E! B. i# u
9 I' x3 O9 {) K5 p! u7 e- 1 P3 J/ `% F! x
- if [ "$aliddnsipv6_record_id" = "" ] S7 w: d: o s/ B& P- o h+ W( W
- then
9 `" I' u V% V5 ` - aliddnsipv6_record_id=`query_recordid | get_recordid`8 `$ a. U& U# d
- #echo '-----------------' $aliddnsipv6_record_id4 |; d1 @1 E& C+ {1 m
- fi0 l+ L$ c) A& R; I
- if [ "$aliddnsipv6_record_id" = "" ]
0 a0 M# q( S+ C( Q- Y3 j6 f - then
4 E- z3 u' |: z% M - aliddnsipv6_record_id=`add_record | get_recordid`
2 R- z4 P2 N' U$ Z+ n - echo "added record $aliddnsipv6_record_id"8 K% e) C% a$ u0 k, ]
- else% o6 \% ?# k0 F1 s1 b6 W/ _- K
- update_record $aliddnsipv6_record_id
! e- `/ d8 g$ ]1 m - echo "updated record $aliddnsipv6_record_id"
: \+ d- T8 X! L$ Y. [- l5 u0 `/ A - fi5 W, y, m0 B# S" C% Q: @
- S8 _9 N6 f& l9 v
复制代码
( M* ~ a2 f3 P: l8 Z+ Q# a
. Z2 L3 S$ c% c- F0 j
$ P' ]- r: R; i, `8 ~' E |
|