|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门...
, J9 T7 ~" S2 h, `明天,对了就是明天 又少不了一顿臭骂...
) o. `3 X3 M: N( S
% @& E, Z7 ?6 T百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,
: y! \. D: y* ]% k" R! N) C/ e
/ W& a9 T* n6 o1 [
! m) w8 @5 x' S8 S5 F& U6 t, a仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,1 | V L8 n+ R, o" h
瞎子过河改了第20行 print $2 不行,33行tail -n4也不行,' ?9 r N0 a" P. j) T5 I" O
菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下
- _7 b& a1 d" R+ R' h
+ f$ g0 [ R0 l8 A+ y- }( `; O6 x N. E9 c
: v1 Q. K7 a1 n1 q& q" v
% e; U* h" q6 O$ Q
/ D& s! J" T6 z: Q W( E
- aliddnsipv6_ak="aliddns_id"+ `& M0 p% C6 o! j. |
- aliddnsipv6_sk="password_info"( N Q, m$ A- W8 D
- aliddnsipv6_name1='nas'
8 q+ e4 c7 [* ?. O! ]4 k2 V - aliddnsipv6_domain='mydomain.cn'. U' x" z+ X( s$ }9 i& `
- aliddnsipv6_ttl="600"
( ~6 c6 g3 Y/ d
3 K" j' S r4 b: |9 P- if [ "$aliddnsipv6_name1" = "@" ]
% Z \4 |2 }1 s- t- e - then
1 W3 ~; m, n) Y: C - aliddnsipv6_name=$aliddnsipv6_domain) c0 W4 U+ a D& Q3 q/ a; O
- else
' a( C/ r7 I& y! y. q - aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain) ?+ ^$ z/ M5 W$ x
- fi
( W( O9 ^, p5 X0 g
+ |! E+ s; H b; p- i) i" _0 H/ g- now=`date`
% S6 a3 e1 h% _
5 ?0 e! _3 J6 t' M* A6 }8 `7 Y% E- die () {
4 i$ A4 S X7 \6 P - echo $1
: I6 t. R* N8 K7 n6 I6 C. O( r - }
7 ^* c$ F" q7 i' }8 P% p - 3 z. D' f2 S& P& T5 n
- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6"3 s9 J+ O- y1 I# g! ~& `
+ y/ Y$ c) n+ {+ u) U" ~* ^- for ipv6 in $ipv6s
# V$ d4 O; F7 k/ U% n - do
4 [: s# Q8 Q( q& D9 [3 y - #ipv6 = $ipv6! I; i5 i& Y& _& _( M9 h
- break
: ^" \7 n- t" [4 n+ u5 j4 G( C/ o - done
" }8 m) a x! Q7 K7 v( @
/ A! t' M+ J' \1 d- echo $ipv6
% g" ~) n; g6 F/ u- P2 \+ V+ P8 P - 0 X3 j8 Q- u E# k
- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`
' k# ^7 u# }6 P0 M- S: R - #echo $current_ipv6
; d" z" b# g& L& t( p
2 N7 R4 o4 R. {, j' I/ @- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`
; w- ^+ |5 [. X& T7 G$ {5 q - echo $current_ipv68 z$ P3 y' W1 E; `
5 T* y7 e( _8 z- if [ "$?" -eq "0" ]$ _' T# t, a5 z e0 ]( W$ K
- then
( b+ A, g! S7 ~6 l& m# w6 B! n3 z# L - current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`6 ?5 z# @2 C9 l$ D* l
- echo $current_ipv6
$ }7 ^5 K4 G0 [% X - 1 I. _; q x7 f$ `' ^, \
- if [ "$ipv6" = "$current_ipv6" ]
9 P, j% C5 s( F$ s. B( U0 ?0 A - then: [4 z2 y6 y6 }1 N2 N1 h) G! p# x! T
- echo "skipping"
0 l/ s7 b. }6 Z - fi # Q) a3 H, _ a1 M4 f3 }
- # fix when A record removed by manual dns is always update error( j& O. E" c. {. J/ m/ _$ Z# P
- else! q* }. C5 Q. h7 v- v- v
- unset aliddnsipv6_record_id
$ w' o' y) r8 B( j - fi- r S7 V" a* Y: C
& R( [6 g ^: w: l. W- / F5 F o3 I! {1 G
- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
# a1 V, M1 g9 R% b" t; ~ r k - + _0 q3 S7 w: P3 J1 f6 A; \5 V3 F
) Y! d+ u8 h l i- urlencode() {
* M1 n* G% e* P* Y - # urlencode <string>
# m* d1 A$ f! i7 E( b0 P. h+ P - out=""$ y4 h& e5 b4 }8 y, s0 H
- while read -n1 c% s8 J5 J% W# l
- do
" K+ b: K9 |, b! r& A2 l9 \$ k - case $c in) N$ Z! @( Y1 }! v9 q
- [a-zA-Z0-9._-]) out="$out$c" ;;
& d: j* E% c8 |' M6 B - *) out="$out`printf '%%%02X' "'$c"`" ;;& g: a0 T: Q) |) k. c& j
- esac
' X: o6 L& n' C, \ - done1 \( S B/ ~; s0 ]
- echo -n $out) w. p! s6 n2 z& i* {8 x, g
- }
; G5 s& c, a& ^& a+ r4 g8 L
! ?" r$ Q: M8 H4 m% x9 B( B! e- enc() {
! f! H: W( Q" A - echo -n "$1" | urlencode' B- Z4 f2 G( p! O9 I
- }+ x4 h V3 j" n! X9 A' e
- $ u. p! j- x: L1 y
- send_request() {
4 W( P- e1 z4 i' C9 r) N - local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09"' }$ z( q5 p* d
- local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)! x+ S+ w: t w# f+ M& |) c" L% ^* {
- curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")". m8 n' z4 X6 l& g) J' h
- }
& |& B0 V) A6 D9 r4 K5 z! x3 p! }
; h- y" e: l9 e- l- get_recordid() {8 E; d3 L- ~/ I9 W9 J+ v
- grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'% J* k! F' s5 |& g! @& m1 f) ]( B
- }. \$ j2 H0 I! {: A/ k, _
* t! j0 p% b# @ L1 h" V: d- query_recordid() {
1 x& K$ P. P6 k( ` - send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA"
- t& `! i: Y! T - }0 `! j2 x5 f) ^- F5 X
- 8 \" s! X! r2 Z' ?" A
- update_record() {+ P3 c+ t6 U* D) ^ D
- 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)"
1 j! P6 }9 N3 c! z6 X - }
3 L. R2 B# G5 u: h0 ~ - - b9 G e& z# L2 c" X- a* {/ S
- add_record() {$ s0 M* ^# Q* A# Y# z" _
- 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)"
% o$ o! O9 g4 j - }3 ]1 X- O2 h3 d" ^/ _) e
3 S+ D8 V, X, ]; ~- #add support */%2A and @/%40 record; I9 i$ W! |! h( F) \7 M3 w1 T# {
- . G& @7 n! M; _- I: S
- - k" T% k9 B1 E$ F
- if [ "$aliddnsipv6_record_id" = "" ]: a/ C) k5 x9 n4 V6 p8 Q3 ~
- then
* k1 I, U1 m( m8 i0 Q - aliddnsipv6_record_id=`query_recordid | get_recordid`
% ] G0 i, l6 e+ j' t - #echo '-----------------' $aliddnsipv6_record_id
?1 X+ n$ @) |7 F+ `' ^% O. Y8 i - fi1 L6 I! |" H" x
- if [ "$aliddnsipv6_record_id" = "" ]2 d3 _6 w& c. x' W
- then, S4 b: Q, A7 _, ?% _# O+ b
- aliddnsipv6_record_id=`add_record | get_recordid`
: g, Y' Q% R, z- Y( t - echo "added record $aliddnsipv6_record_id"2 [* ]8 e+ [7 Z* ?
- else; @% |4 n! H1 e4 q, N3 F
- update_record $aliddnsipv6_record_id
2 \: q5 L% T1 b, s - echo "updated record $aliddnsipv6_record_id"4 ] L7 t2 p: Q7 B
- fi
( K/ a0 P, D! A$ A$ E1 ]% X
e) r/ y7 o0 Z5 x* U
复制代码 ' q+ a1 z9 p: r- \( I
8 w- f5 |* ~. l4 d' m; }) W! i# o& Y6 ]+ R8 F6 y# D4 U
|
|