|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门...
! S' S. w' S7 n* r3 J& U明天,对了就是明天 又少不了一顿臭骂...: s2 n" d" x% P, l v! @
1 Z$ k6 ?5 B/ P百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,
; P2 y/ o3 H) U. l0 q1 I' Q" z! X* j* {0 y' G, |2 R: Z
r% q4 W0 R; Y8 ?9 p# v
仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,
# _5 K3 m" B$ E4 }瞎子过河改了第20行 print $2 不行,33行tail -n4也不行,6 R3 S0 d/ w& W% y; n
菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下
; @: ^+ r6 [/ W! @& ^2 }% D
/ K. p) N% b- `0 S3 x2 y, e$ T% }- d* K, }: S
8 m0 D: K; A1 Y, K/ A, c
o7 |2 j+ A6 P* d' L" Z" D7 D* z; m) [
- aliddnsipv6_ak="aliddns_id"* K# G$ o5 G1 ? C
- aliddnsipv6_sk="password_info"- P% n8 U, a/ t [+ A6 Y
- aliddnsipv6_name1='nas'
: u$ ]! M3 p3 a7 W& z# I - aliddnsipv6_domain='mydomain.cn'3 i7 G7 M$ m7 R& C
- aliddnsipv6_ttl="600"( ^: I7 S- ]' B9 _. z
- * W8 |+ S% p& R0 @9 i' n
- if [ "$aliddnsipv6_name1" = "@" ]
" ]7 \( k6 I% W( z& v* K - then
2 h1 ]# r$ H3 A' p& [* [ - aliddnsipv6_name=$aliddnsipv6_domain- J) c0 A& m2 p; L" B F1 j
- else
, i% v4 \; \; w7 ?) B' B. B! A4 M - aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
) w; ~! J) | ~7 U6 T C: s( W - fi
) J4 |% _8 ~& \7 h+ t; e
/ L1 O! h4 e- t, `. J) l- now=`date`) o( R2 `0 v. p; X. L7 G
- / @( v5 v0 ]" }9 c
- die () {5 X. |5 C; b7 _+ Y
- echo $1
) {9 {) L9 {& A - }
7 t; s9 x3 O6 @) j! g y5 D! g6 d" e
, C2 M' {' i# W- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6"" K9 _0 w, U, Y8 |
- $ b0 [2 Q+ p0 o5 s" w |8 z2 y; R
- for ipv6 in $ipv6s
x( z! q% ~- { - do
# u' n$ d+ Y! B$ N0 s7 `) | - #ipv6 = $ipv6
' x+ u8 c: Q% {+ E - break) M f9 n. F, S; a
- done! r5 l* d) Q: A$ e9 @) p
2 [/ W8 D" D# z2 b- echo $ipv63 `6 k9 z8 {- _( Q/ t$ Z$ t
% b$ o0 j. v/ ^ z- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`: \7 E8 F2 C+ l0 q" Z6 `3 g5 c, `
- #echo $current_ipv6
+ h3 `3 `# J+ w - , s) b- v& U8 g$ J: ~ V( n
- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`+ R# n; s6 v4 }& {0 D
- echo $current_ipv6
* @" d e9 Z3 a8 V3 m
4 X$ h" ~; j) L* [- x% x- if [ "$?" -eq "0" ]$ }, O% P" R+ T, ^% L% ?
- then
( {) v; V* D; b2 u - current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'` E- S- p* B }6 `- b
- echo $current_ipv66 g" H+ K7 f' G6 J# p& h
- , P) l% R7 A& l3 e3 m
- if [ "$ipv6" = "$current_ipv6" ]
$ G( v. s/ g# E+ o/ O' \ - then
- W3 m% ~6 @* [& c5 T! i - echo "skipping"
% U1 F- y* z6 i# y0 V0 l! z - fi ; \* b/ L0 V. O- k; l9 y4 b+ w
- # fix when A record removed by manual dns is always update error
3 i5 W1 S+ k1 t* ^$ F6 H8 w - else/ t/ y* H# u2 m* ]% F7 Z
- unset aliddnsipv6_record_id# u3 Z+ F. ~8 ]) |4 p' `
- fi
5 n {* p5 Z. }7 s$ Q
5 a5 {& D5 R) y" n- X- ' v5 p* O6 O) Y2 }$ W" ~& U
- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
) p5 z8 h7 s2 ^2 i9 F, ?% c0 G1 ^
* q1 y8 J" w* x: T/ b& z3 {- ( t; o% ~) W v1 K
- urlencode() {9 N a8 L+ G7 w3 |" R$ z
- # urlencode <string>* r j- \# E; m7 c2 V9 b, o
- out=""( Q5 R# L1 }! Z; R
- while read -n1 c2 \" A, C1 Q; `: g4 j, s& H C
- do
0 r/ T& }. G6 h* ^ - case $c in
% ?5 e" Y! Z* V0 e2 |5 ^ - [a-zA-Z0-9._-]) out="$out$c" ;;$ v: \0 g8 I9 V: x
- *) out="$out`printf '%%%02X' "'$c"`" ;;
$ J- r8 p- z2 s4 l: v - esac
Y6 M" H* ~# n$ `1 z3 b1 u - done6 y; v% t m, {/ X5 |) b2 L5 G
- echo -n $out. C+ l$ E! F1 k
- }6 S" v+ _6 N' r/ O1 A% X5 m
" P* U8 k! `, v- ^) i: I- enc() {9 Y. W4 n2 O0 x( t0 g @
- echo -n "$1" | urlencode
* w y5 [6 s0 ~" a% c6 U+ N/ F" j - }
$ p/ E8 [# X8 _4 Y6 K
1 G' J6 Z' w$ \ I6 Z- send_request() {
5 U( A$ N/ Y* W. l - local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09"
r( _8 t# p* a9 j - local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)
6 d! N8 ^- X" ] - curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
U6 C7 x! J/ q - }/ f. `, Z( k7 p9 H
& L4 p* B# N. |3 k m8 l- get_recordid() { D' W: a' Q. Y- _6 C2 i7 @
- grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
8 s7 o* l" T% i e8 Z0 K8 k - }
. D) o" U1 q9 s$ i) ?, ^* V - ' U. A: i- C/ _! B t4 ]( W
- query_recordid() {) \2 Y5 o& {" n! |' ]* i
- send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA"
. y) j/ X& Z, P ~0 ] - }+ q5 Y9 b" A" i" |1 p
- 8 h. L5 i; r7 n) @" r I
- update_record() {" G8 w5 k! Z2 O0 I6 T
- 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)"
3 n0 P7 i' Q4 n6 X" h& G - }
1 ]- G# l1 a/ S9 _. O" x" h
w" [% V( N- @2 f( S- add_record() {
9 T A2 |3 A1 l0 @0 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)"; P$ j% q* E( O: l- i5 q
- }/ M( {! I! h- U; x7 J: c- \! T0 T
- 7 R2 V/ S1 r2 W& l
- #add support */%2A and @/%40 record1 Y3 a2 k( E7 x, d
- ' _: m( j8 W& l4 _! ~
- 3 _1 |) N1 i, M8 _, F: R; {1 w
- if [ "$aliddnsipv6_record_id" = "" ]
' E( L$ v4 G8 k( t H - then
' }" y! S5 a( R+ t. A - aliddnsipv6_record_id=`query_recordid | get_recordid`
/ I, `$ x, G0 z. x; v - #echo '-----------------' $aliddnsipv6_record_id
: M( A7 E2 m9 K* b" r - fi
2 y6 s' v! A4 u/ p, \" `' J - if [ "$aliddnsipv6_record_id" = "" ]# a9 z8 Q; N! }# X1 X0 O
- then: K! H/ H3 j. ?5 w0 ^
- aliddnsipv6_record_id=`add_record | get_recordid`
$ N% @6 |/ {& D. J0 D! f - echo "added record $aliddnsipv6_record_id"
9 w- p! d0 t: ~0 x9 e# v% E g - else
$ t) |3 ]9 _! c9 { - update_record $aliddnsipv6_record_id% e7 z6 C9 W3 F8 H. D( K) N
- echo "updated record $aliddnsipv6_record_id"7 A$ g7 p8 Q& z" r5 e" f( E
- fi
" x# j, l4 c E - * B- @, e$ o2 k/ Y
复制代码 * ?6 Q/ U5 [# [; ?, U" v. B
! a0 z8 Y, k, }8 j1 V* R- k9 P
! R5 o6 s1 [! ~. W6 p' Q% N9 ^ z1 @
|
|