|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门.../ H6 q8 ?: b4 w2 |* _* n' _+ J
明天,对了就是明天 又少不了一顿臭骂...
( D8 U! D U9 }) d+ U* T5 U
" v0 a2 S3 i' V, J# u% v; a百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,) M. y. p! B" ^! ?+ D
; n" W1 v( |- h8 n8 Z
[( f2 ?+ H% J5 b仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,
5 s9 v6 w8 s- F2 z, v* _7 K( O% y瞎子过河改了第20行 print $2 不行,33行tail -n4也不行,
6 |4 p) p; K/ G3 u: Q4 n6 h菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下2 ?3 x' j; w7 S# L0 y3 }
* r' J" [, [( R C2 R
8 Q$ r$ N i* `0 M/ l! o3 J2 m+ J; D4 `8 I8 y
! y) n, s w2 g/ E
" c* w! y$ \. @6 y& B
- aliddnsipv6_ak="aliddns_id"! O, l) H. f/ s2 d) ~
- aliddnsipv6_sk="password_info"
' t7 K m; ~ R3 z( e, e - aliddnsipv6_name1='nas'
, z w' z/ N. u& I - aliddnsipv6_domain='mydomain.cn'
7 d0 n" ]; Q( K' e% F5 D! Y - aliddnsipv6_ttl="600"! f0 l1 o$ A$ M1 a4 K0 {
- & ?# ?4 R+ x( u- S
- if [ "$aliddnsipv6_name1" = "@" ]
3 ~! O9 }4 ?0 \. n3 ^ - then
, b' v% S- P+ u0 O9 O3 h - aliddnsipv6_name=$aliddnsipv6_domain3 P% u& \9 r+ f: r* r2 o) K0 v
- else
_% M- e+ L6 b - aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
6 @/ g1 v2 U. L& Z. }4 u - fi
8 k" C* l2 H: H! g - ( U; X9 d0 I5 Q) [
- now=`date`" h$ X) X. W6 |
& F; R5 M6 H0 ^0 z9 S% Z4 s5 M- die () {
' s# M/ p# k$ @2 ` - echo $1" g1 G1 l4 O( ?# A& _
- }# F$ e+ |+ t# @
' u! o. {. U. K4 |) k+ E- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6". K9 {/ m% Z4 ]0 \
- 3 q! ]* F5 V5 k! R# B8 a l1 _7 q U; ^
- for ipv6 in $ipv6s) `. E0 [* B8 _& `
- do9 z$ K6 X' ~0 {4 C, L7 t8 V
- #ipv6 = $ipv65 ?6 O. ~7 y, N) Z# @
- break
' U, ]; W R5 q, m- u% l9 U - done
# U! ?+ ^1 e/ X# v" @1 j! `
: K: `& R b/ F' B' j: N$ |- echo $ipv6
. |0 I; ]* h' u( F
" F8 s& T! L0 i- L' d" p6 g- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`! W! ?1 \; C) l* x# {8 c& Z' e7 [) Z$ K
- #echo $current_ipv6
, j9 ]! C# m, g* ^* ~) @. K9 d/ {
; S/ a5 @9 y% a- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`
* F0 Y; Y9 L5 Y# _, w# O - echo $current_ipv6( W& ~. H4 o& D7 m: P/ {
7 O" x. z$ j9 m* Q3 i; S- if [ "$?" -eq "0" ]
" x! m; g* p2 ? - then
% J" @( K4 H3 G1 R - current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`4 |$ I8 K9 |# | c) ^
- echo $current_ipv6+ t1 [' v% } C, @6 T3 \& a& P
0 D7 n3 h8 o5 v8 J- if [ "$ipv6" = "$current_ipv6" ]
, p: O9 G$ ]" r8 s' B. w - then
9 N3 L# n: Q: z) L# | - echo "skipping"( ]2 ^0 S5 d/ p
- fi
) v }7 [6 j* X - # fix when A record removed by manual dns is always update error
1 T! m. X1 w# f, y, T - else
7 E9 }* V* C/ j% W/ R( n' h- j3 M - unset aliddnsipv6_record_id
. o0 e( o3 F8 l. v. C - fi
8 o8 U7 n) U, W% _
8 D! R/ c0 t0 d
( }8 B4 E$ d& P3 P, m2 f- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
/ Q$ [4 g7 K; l9 ^% h+ }
) y) }. M+ B$ u$ Q
5 k: {7 q& `( L% o! Q# Q- urlencode() {
! a* M, p0 @( V* l - # urlencode <string>9 @/ [3 `/ ]! N3 O) z5 p, |
- out=""8 O) j! p# a9 @* T( R3 A! M2 K; G
- while read -n1 c
5 k9 _( A+ G. o5 e - do
h0 ]* V1 V" j+ j1 K, Z - case $c in
# Q* W' i7 [6 n* U8 h4 x1 Q - [a-zA-Z0-9._-]) out="$out$c" ;;
9 w& k0 Y y3 x - *) out="$out`printf '%%%02X' "'$c"`" ;;
+ f5 e- p7 A T3 o1 N" `/ b4 B - esac
" x7 G/ N7 W& H - done
6 F+ ]+ h) q0 M8 a( F5 y5 N- K0 w - echo -n $out+ D2 F+ B$ B* b1 \2 S7 j7 {: w
- }# k6 I- B6 v2 z4 f: C
- 2 I- D$ R- X8 v! \
- enc() {/ n1 O8 H4 @6 f( X* q: w
- echo -n "$1" | urlencode) B" }, E/ B# w& _5 G
- }( E% l- |: v. a1 E1 U$ M% d. x
+ V0 _+ R8 }" A. A6 B y5 r+ c+ D5 Y- send_request() {7 O+ s8 e5 {8 g9 j% N! E+ j
- local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09"& z9 ]/ h+ y/ m) Z. n* i8 K
- local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)
& X' b2 n6 {" J+ O0 R; ^3 Y' } - curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
i3 f4 w6 a5 n, `; ^3 X" { - }- O" R5 m% t4 K/ a0 V! T0 X
- ( ^& Y8 D, F9 @+ l8 J6 q
- get_recordid() {
9 U; x; a) w& U# G; q - grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
) I P0 ]- s h$ ` - }6 O7 A6 I0 H% V' F
/ J: n+ D+ r( K2 i6 m& e4 Y- query_recordid() {. ~9 B' T9 t+ M' |; {, Z4 t
- send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA"# J1 C9 z, {, a0 ?# {0 O
- }1 {$ l9 g" z8 S6 j7 _
- ' c% H# V& V/ A5 y
- update_record() {
' ^' s! j- l# R - 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)"/ r& m; y; O5 |" w7 C
- }
/ Y/ y- m0 E8 E2 B - 1 M; X; I+ d R8 Q4 k' i7 U% L
- add_record() {
9 G; d! U v- `, p5 e& C* j' K7 x, _ - 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! z, R# E* V5 ^
- }; C5 Q# i& w) Y; }' U3 K+ j ~
- 3 Z. s8 B- L' M) H1 `
- #add support */%2A and @/%40 record
& p: ^% ^+ z1 G A! Z
1 w6 s# ]; w9 C, g( `9 M H [
4 |' ^- ~5 v j y1 S ~- if [ "$aliddnsipv6_record_id" = "" ]
# H4 a' n+ Y9 C4 c# D8 y' M4 x) r - then" j; J2 e5 b: N4 ]; o: N/ f
- aliddnsipv6_record_id=`query_recordid | get_recordid`/ [5 P7 Q$ E# \$ w) I4 j
- #echo '-----------------' $aliddnsipv6_record_id) ^5 z8 q3 P8 G4 ]& K o
- fi
. c, s0 Y) f6 ^4 P& o) } - if [ "$aliddnsipv6_record_id" = "" ]
" u- c8 P/ ^* V+ o% _ - then
9 x% v6 ^+ z! f6 A4 e - aliddnsipv6_record_id=`add_record | get_recordid`7 u+ ~* ?& x0 a* ?3 |; u, U
- echo "added record $aliddnsipv6_record_id"* z7 S c$ T& |7 }9 x. m
- else
$ N+ c$ N# @8 J - update_record $aliddnsipv6_record_id. |8 y6 Q, h8 L* Q
- echo "updated record $aliddnsipv6_record_id"
! D2 O6 j3 L8 Q - fi
1 S! q1 Z& g0 `$ d( _3 ^' `: ] - ) a$ h3 }- h, j1 L, O) F
复制代码 6 @$ y3 v- p) Q* @& p
' ~6 [! U5 D. L$ x8 q0 k
+ O3 p P; G$ G |
|