|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门...
8 U5 b+ S( r- G( T( v明天,对了就是明天 又少不了一顿臭骂...
k D. l& ?7 p+ [0 [& {
1 D9 [3 r/ p" a+ \1 w8 F" R百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,
8 o, m3 P4 X" Y/ X) w4 E, V% A- n+ l y( @# r/ P/ D
4 X7 @" J6 W! O4 u$ \. r仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,
. ]/ t) h5 B7 p2 X* X瞎子过河改了第20行 print $2 不行,33行tail -n4也不行,1 s' P" I/ @% \5 K/ f
菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下
! K' O, _6 t* ^' z+ z, d* M( z7 i
3 [; n% j% O9 h" D
+ Q; m1 e- O4 h7 P9 |
" k T& @2 A1 X7 e- I
3 V$ s0 x" p; E. u- aliddnsipv6_ak="aliddns_id"& w( v% _/ E: \$ I) D0 g
- aliddnsipv6_sk="password_info". ^# P% W2 K1 |+ Z3 \9 j
- aliddnsipv6_name1='nas': g6 R" m9 ?2 f% A. `, o* x
- aliddnsipv6_domain='mydomain.cn'
) Z5 X+ p9 S2 a3 m$ a - aliddnsipv6_ttl="600"
6 C6 k0 v% p9 L0 g+ k( Q - 4 r. B. o& e: B7 b! l7 o
- if [ "$aliddnsipv6_name1" = "@" ]
" E4 Q$ g% V/ \5 [) ~ - then
+ T7 S. Y2 @4 @0 e( O1 ]1 E - aliddnsipv6_name=$aliddnsipv6_domain# }( D; y! p- w, i2 Q
- else$ w! o' A4 j6 e m; b
- aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
2 T" G: @( t% [8 S; o* r - fi
0 W, W ?5 K) x5 s5 b' i
" r4 @* [$ ?' Z2 U9 B- now=`date`9 s! q+ `$ x& n$ e
- 5 B2 b+ E& D9 _9 f
- die () {6 F( g. N. H+ a4 u
- echo $1
, T6 C* U' Y0 ^ - }( p7 O! c. _6 b5 N3 ^
- $ J+ e4 y2 V/ y- ~; M- ?; s3 c/ m
- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6"# g# z( X9 w, R2 T
- ) w2 q2 `$ J. E4 C
- for ipv6 in $ipv6s8 z* r' w! G; A; f
- do
: z! O# f- ~) n/ B+ c) s - #ipv6 = $ipv6
# v5 D; L- s U: r. x: p1 h - break
$ o; n' L) s* p5 x. ^0 w - done/ K* A3 n' {8 ?
- ) `& @! r3 m) `+ ^; V1 p
- echo $ipv60 i3 ?% S( ?6 S7 Y+ T, {* k
& Q h- G# @3 }& S: T- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`: V5 n' |9 R5 t4 V* b" t7 m4 p
- #echo $current_ipv6
3 x% e$ |/ ~ g' z
+ u2 J3 U# V: C. ~; {7 C- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`
X; D+ H) L9 {" U4 a - echo $current_ipv6
7 J8 T% | ?# Y3 y7 V4 v* L
2 w0 o$ k4 a" O) l; W' z- if [ "$?" -eq "0" ]
5 I- B' H5 `% |, S- f* a' z2 a8 N- p - then
/ ]: y( b( c5 e3 O, ] - current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`
# F2 ?' \# p( `& [8 Z - echo $current_ipv6
( E5 H# I8 o* ~; W+ Y2 \ - - ~7 C; e2 G7 b7 G! ~% R0 }5 w5 J( e
- if [ "$ipv6" = "$current_ipv6" ]. r2 z2 v, S D; v3 s
- then$ J: X! ]2 N! a, D6 h
- echo "skipping"
) g& I+ l/ C1 j- e - fi * l( M2 W1 u) A1 b2 C/ K4 D
- # fix when A record removed by manual dns is always update error
5 ^/ F9 {% M$ P) k* s3 r - else; e- d, a5 b1 o& J
- unset aliddnsipv6_record_id
/ m( e }6 G# ~$ r; d - fi) \. r8 {1 X' t; {# E
. O& V- F3 H) R9 l- 0 {" g B2 N w+ i
- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`1 K3 j$ x1 ^$ ]; j% K
8 R& |$ H" h0 `' k! K
0 C7 q9 v5 r4 G- urlencode() {# `& a8 N' @- ^/ X: \
- # urlencode <string>
: F! n& K6 z: k2 {% E# n - out=""
6 h' u2 O. K) M" ^- H3 N2 X0 j2 B+ G - while read -n1 c& x4 s! R. E4 k
- do
1 z, y! ^4 T7 y! k3 I. w1 ~- K; x/ J - case $c in
/ U7 {: e. g9 F! b) F, F$ b - [a-zA-Z0-9._-]) out="$out$c" ;;
* ]" k! d$ H3 i' M9 A - *) out="$out`printf '%%%02X' "'$c"`" ;;
: ^' {# B4 |- w# T6 R0 D8 y) | - esac
4 l) I, l! j. L, ]! A1 Y' { - done: l7 t9 x4 P" v
- echo -n $out2 J( Y; H3 l, n$ r" L( E
- }; y! E, s3 d! Z( y
) V: w) C) `9 C8 n( U) b- enc() {
" p6 m6 { e/ I - echo -n "$1" | urlencode
& L3 k; P1 ]% ` \0 Y" }! }# X' U - }+ X# v5 C' B1 V* K- u
" D- B6 ~6 p o0 ^/ _/ q- send_request() {
' a& |% R; ^9 ?; Q& v# u8 t3 O - local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09". H( e2 x0 b, k; J3 ^
- local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)* z) p: U" S% X0 S8 @6 v0 A
- curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
) A0 c+ u; }1 W- I9 {' F - }1 q( q5 i5 y" t. U$ s0 F
- / n- g9 \& q( p0 J% K! C. I$ h
- get_recordid() {+ U7 I( `7 b# z0 H
- grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'# h+ e" a) P" u3 f+ }) [) k
- }4 F# g( _( Y8 p
f' Z. y- H& ]0 U! @% o6 C9 e- query_recordid() {' L# F* ~5 J0 \- @
- send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA"
" G0 T' ^% Y& Z& s' ` \ - }
* \3 ]& ]1 {" z$ m5 M) B
7 e; w' G: h/ |- h- update_record() {
6 h% Y2 W6 Q( e* H/ h6 ]3 | - 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)"9 [# B9 q, J4 D: l9 k# ]: R( i- o4 u
- }8 [7 i9 G0 C- H( L: x0 ?0 c
: E6 J9 l" V3 T+ l! p4 e# V- add_record() {
* {, v; r. Y: V& @: U - 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)"
2 i6 I& T- r J2 A; ^/ V/ ^% ^ - }. C5 a/ F$ ~. i5 D* i# o3 E
- " z7 Q) j% {% r: i( T L
- #add support */%2A and @/%40 record- g' _/ h2 q2 f
: h% ?2 Q! x3 z+ ^: D- & }/ g; Y" d, g
- if [ "$aliddnsipv6_record_id" = "" ] n; g0 a* \7 G" m. l1 L. P" H: k
- then5 j" b3 B9 e+ j L0 P3 |7 r
- aliddnsipv6_record_id=`query_recordid | get_recordid`7 O2 g. r0 D! N* n
- #echo '-----------------' $aliddnsipv6_record_id; r- q1 d. A, z* R& G+ {3 d
- fi
2 q, l5 A* R8 w9 e; x: q - if [ "$aliddnsipv6_record_id" = "" ]
7 b- {$ H; q U0 p - then
- m* B% |! |) n/ W1 `# n# y - aliddnsipv6_record_id=`add_record | get_recordid`
% E2 q1 E* Z$ l4 B4 u - echo "added record $aliddnsipv6_record_id"* p5 N8 F# M- S3 [
- else5 Q9 ]4 ~: J+ \2 q: j( j2 X2 J" `
- update_record $aliddnsipv6_record_id$ B# W8 k1 M" `8 g3 y
- echo "updated record $aliddnsipv6_record_id"
# J5 Z: f+ ^" F. C E - fi
" M( u- n9 G: m+ a! c8 ~, a - ; I- w$ p+ ~7 W$ G0 Y
复制代码 - p) F( l# s# m1 n) E. F( E: I
+ P. J5 D6 ^) f: [. k- Q0 a0 q7 i
|
|