|
|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门...7 @4 p# u6 _$ y* U+ N( ] ?6 V& _
明天,对了就是明天 又少不了一顿臭骂...
- J, }6 h2 R! h% K. f( z b, ~
- e5 v2 R* |; }' A百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,
9 y- s& w* ]) y3 W, v
$ o5 x( `) U8 u$ [) L. m- |% o& R' F7 t3 V' d2 u
仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,
+ Z8 o; Z! Q, b6 k2 n4 S' p1 {瞎子过河改了第20行 print $2 不行,33行tail -n4也不行,. \( ?5 E+ S3 d' A: j' [
菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下) g( k! o. J N' M7 X
/ @% a0 y, T/ q
; H7 f; P% |8 a) y0 o) l, ]
( P5 v% T/ o! K* q: q2 H
% V+ a9 F' R# `4 T4 A- `9 F
' a2 P: Y7 d8 \- aliddnsipv6_ak="aliddns_id"
* g) J( B3 D$ ]0 X0 U I - aliddnsipv6_sk="password_info"! G. I+ ~, O L, |: T- c1 p# q! y3 J
- aliddnsipv6_name1='nas'
, X) e0 o3 k' o' y, u3 ?/ R - aliddnsipv6_domain='mydomain.cn'
9 Y+ @7 M0 x2 N - aliddnsipv6_ttl="600"
: h$ U7 o% G7 D' Z$ h - 6 |( |" }" _# x
- if [ "$aliddnsipv6_name1" = "@" ], [, c. P- X2 O2 w
- then
, K8 D" u3 [- q. f, f: I) W - aliddnsipv6_name=$aliddnsipv6_domain9 g5 A( L; N' o! c4 B; l) ?
- else" e! Q* l9 e& d
- aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
- \; \8 S# w: K ^ - fi8 J. ^( `' y) o: s' J: n7 J
- j- _% x1 K( q2 [
- now=`date`. i) R: t( G0 C$ C
- / H: J8 @. O, u/ p2 J. h! l
- die () {
: i' v" J7 h: _) I - echo $1
; j: A( `$ A* d% P* J- s - }
/ e5 @) q' h8 H" `! N; p
3 @ ? D8 i, X- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6"
2 B0 K: @9 p. R
9 t& F9 }8 o O5 ^ L7 i2 n- for ipv6 in $ipv6s
( ~$ k7 c3 X/ r) e2 @ - do
7 E. N. U& I8 |8 z9 D% w - #ipv6 = $ipv6( T* A& F1 o' J# y+ ^
- break
5 s# F7 c2 e# k4 p1 |7 v - done
1 P$ m" A) N8 D3 A& u8 U$ a
, Q' O7 k* T7 k: \- echo $ipv6' [! f0 h5 A/ {! N0 a* T, ?
6 O0 F5 T5 ]$ g1 Y0 q- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`
7 V. K# ]: b2 B2 j - #echo $current_ipv6; k$ z& O! [- z `' N6 f
- 5 @' f/ s7 X& A6 A# w6 o
- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`
% y, i3 R8 N! ^: `8 R - echo $current_ipv6
+ A$ }! e% Q) o1 p' g& _( u0 J - " O: Z9 h; d4 [/ Z% [+ ?# `
- if [ "$?" -eq "0" ]
1 n/ ^0 j' y- F2 k4 w - then
5 Y. j* N0 g9 a( K a" M6 s; W+ Q6 ` - current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`
5 { x' p: F/ @2 B - echo $current_ipv6
$ l7 j+ W; n% J
/ A+ `' x( v8 K/ \ d8 L- if [ "$ipv6" = "$current_ipv6" ]
: C: p9 l8 z3 W: r- A4 }/ B - then7 a& `% a- @/ w) L. D9 D, N, B
- echo "skipping"5 W3 P# T7 ^$ j. ~7 i# P
- fi
4 r0 n9 _+ I' D/ R - # fix when A record removed by manual dns is always update error
6 i7 p; q% Z: d9 l# C, g/ d - else
2 K2 }* p! f+ X& m - unset aliddnsipv6_record_id
( e% @ r t- p0 Z& X - fi
* ?0 L7 [, s$ Q0 d& g) Z - + L7 T/ y/ [; F b% L$ ^% `& ]3 D
" b. y, y8 W2 {1 k9 P% O- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
7 y; \. {, }; S
7 D" u, G ^) [4 j9 F- 6 P& e I% {, ]+ r& n
- urlencode() { ]7 Q0 n: C" q6 h/ _
- # urlencode <string>
- Y0 x5 n2 O5 Q4 u, s3 W' P) x - out=""
7 g, ?9 }/ y* J* o - while read -n1 c' f% c+ m9 R8 `& ?) _* m' q
- do* k1 U' w* Y2 A5 ]( n+ v
- case $c in, i9 X; J6 @ y- L) l% M! P
- [a-zA-Z0-9._-]) out="$out$c" ;;. y, E, F! l5 @. B
- *) out="$out`printf '%%%02X' "'$c"`" ;;
+ z3 ~# Q% @% o. {* N$ ^ - esac
8 ~0 |- m- m) W4 n$ a0 Z7 F( ? - done
% `: R' r# F2 A4 a& W# Z - echo -n $out( L" A6 C% k( r. [8 B3 I) V) t* C
- }- t; |' P4 d9 D2 j+ _0 @0 x) @
J% `- b8 r0 _: x- [8 z- enc() {
- l4 ?' _ T6 h/ ~" ], G0 M - echo -n "$1" | urlencode, ^- C8 M9 a/ B( n4 A' }9 B9 v" v% Q! _
- }
h3 `! {, W; u6 Y
. O; v+ r3 I7 y; H" H- send_request() {
7 d0 u* r, k* g6 ] - local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09"
* P" p {; {2 H4 ?) g - local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)- `/ ?+ H/ U( M# s1 s1 z
- curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"' t7 U" g3 b- v+ _3 v& E! W
- }
4 o3 f7 u7 I7 @2 d& L
7 a5 B; c( V2 M+ V- o- get_recordid() {
| ^8 i3 ^5 ~ - grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
' R$ r: N- Y- _9 v' i! j0 f - }, V: a; [6 {% c' m% H, r: V& Z
1 K% y0 e% S9 m- query_recordid() {6 s6 O! K& k1 t9 J. F9 j
- send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA") g- Q" m6 M+ _- A- \
- }. X; f" n1 T. C) P6 d' v
- ' u7 S7 `* G3 }$ ?2 e
- update_record() {
4 P$ m B$ W. i# R; X% Q - 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)"' C$ d9 p# d0 g5 k0 r; ^2 l, U
- }
. B F- R/ X4 ]/ M" R' E
5 w, N( J0 N9 `) q9 }9 Z- add_record() {
& M' c7 N, Q1 j0 g( l - 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)"
5 @2 o% Q4 q3 V- v - }
$ m; E( I" o1 k. c6 e9 }# c* u
9 q: B* ]9 C# z- #add support */%2A and @/%40 record1 O S3 w* \7 \9 r% b3 x5 O
0 Q, x3 @: t+ ^. ~2 B9 i
, d; i5 F) M2 {' c7 G' x- if [ "$aliddnsipv6_record_id" = "" ]5 c+ O" {" ]" I C! B
- then8 ?1 _! a( `: x( R
- aliddnsipv6_record_id=`query_recordid | get_recordid`
4 l! z7 P2 E4 W; m0 h - #echo '-----------------' $aliddnsipv6_record_id
7 W9 i$ i( S) o9 A' W. D - fi9 Q' z$ }) f& T, N, {* F
- if [ "$aliddnsipv6_record_id" = "" ]
' s6 j9 k" ?* Y" ]: H - then. I9 _' @) J9 g% t
- aliddnsipv6_record_id=`add_record | get_recordid`
6 W4 C: m7 u c0 H - echo "added record $aliddnsipv6_record_id"8 V; m) r. Y: G, z$ e7 ]1 C
- else
% ?# N+ K1 _7 x8 n' K4 b0 A' W - update_record $aliddnsipv6_record_id' X8 Y P( p! ^: v. j1 R$ d+ O
- echo "updated record $aliddnsipv6_record_id"
( L$ l& |/ o6 P; Z* |) o2 S, H - fi
3 }6 e, d, c7 q7 X! s - * k7 g' [. K7 F5 Y
复制代码
2 e; F2 u$ V, y, Y' v
- F. m% `# \* o: V0 R
% J0 C+ S2 J0 M2 b, t |
|