|
|
从4月1日来到矿渣后,就仿佛打开了新世界,经常折腾到深夜,然后第二天伴随着黑眼圈和唠叨出门...2 v, a. X3 j5 B$ ]
明天,对了就是明天 又少不了一顿臭骂...
/ y! J* }* _$ I$ V {! e1 @) e- J& f F. U, Y7 M
百度搜到一大佬在张大妈上发布的aliddns教程,按照他的照抄结果脚本把内网ipv6地址传上去了,4 k: R# f/ ]. k4 J* `/ {9 \
' E* O/ Y- y. |( K6 b
) R1 o/ C1 [0 d. p. |2 G- w
仔细一看他的教程中 ipv6地址栏 第一行地址就是外网地址,而我的是内网地址,
( a# i) ~3 W, W( G5 z瞎子过河改了第20行 print $2 不行,33行tail -n4也不行,. H* U& @ }/ O/ T
菜鸟看不懂代码,也不知道去哪问,希望能有路过的大神能指点下# E2 I& y0 I& g
7 y' c8 S& ~& O& X
3 h, D3 r* F; W5 q
( c7 C/ @3 i) }6 {# f
# r4 t, s9 U+ D
, p$ s9 @8 g' U ]4 x9 c
- aliddnsipv6_ak="aliddns_id"9 ]* e' k* _( }) S7 P0 F7 M
- aliddnsipv6_sk="password_info"
# |1 [" l' x' \; [5 H/ F4 e - aliddnsipv6_name1='nas'
" H6 G2 n. {& n - aliddnsipv6_domain='mydomain.cn'
' t: T: D5 Y2 s - aliddnsipv6_ttl="600"0 [. f, V0 e; P& d5 W2 c/ y5 {0 {
- 5 D* p, J5 }; i
- if [ "$aliddnsipv6_name1" = "@" ]
5 N& E- l) V9 y5 X, q - then
1 B6 S( r3 W- J. V$ B, h8 U - aliddnsipv6_name=$aliddnsipv6_domain* Q% U% a1 P9 t
- else
) `( u5 s" [' x( |" G5 Z - aliddnsipv6_name=$aliddnsipv6_name1.$aliddnsipv6_domain
8 A( K& X B/ u c - fi
4 k" N# ?7 i, h: b; i$ f; S( z - ' W7 @# H/ r: A* K
- now=`date` y P _: [ v1 d3 K4 t
- 7 o8 N# @3 \& T" [6 N6 D/ R
- die () {$ U9 v# b, Y4 t+ R, f8 K
- echo $1: `' L8 F, ^, i3 y& R: `
- }
7 |4 V- E8 \$ ]1 B - % N' I, S$ d/ |3 w1 b! ~0 Z
- ipv6s=`ip addr show eth0 | grep "inet6.*global" | awk '{print $1}' | awk -F"/" '{print $1}'` || die "$ipv6"
6 P2 \. j$ X8 ^/ z
+ U! A( W* N6 I/ E2 W7 i& J- for ipv6 in $ipv6s5 t1 Y/ ?! ^2 w( [2 j% {7 v+ }& J
- do
6 |8 U4 s9 s6 Q# I - #ipv6 = $ipv6
4 F) n' B( t( R# J - break
. M" P* `& ^4 Q9 Q6 F/ q - done x, c" X1 U' |4 W6 Q, S8 m7 |: ~
- , C4 _6 g+ [0 e, t( H; y/ p
- echo $ipv6
: E( ]! m/ A" I: i; a$ ?6 ?6 Y - 6 a8 k1 Z: f# Z, i0 ?8 j
- current_ipv6=`nslookup -query=AAAA $aliddnsipv6_name 2>&1`
( C! P! @- |: |$ v) L, U7 A - #echo $current_ipv6" q0 ^6 h; K, j% Z2 W* C
- $ O. d; I0 P4 ~' k
- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`0 h8 {& g# O" \6 O& {% U$ {) Y+ J8 _6 h
- echo $current_ipv6: k, V2 c8 U! l9 A) c2 y) B' S
9 h$ I4 o0 E9 A3 W/ p) R- if [ "$?" -eq "0" ]
/ M1 V. F# W9 w - then! C* z$ K7 a/ R% U, k j
- current_ipv6=`echo "$current_ipv6" | grep 'Address: ' | tail -n1 | awk '{print $NF}'`, r+ q0 {& I9 d+ }2 ~3 q$ H
- echo $current_ipv6
. R0 T( K+ }; ?* }& D6 I
* W" Z" w6 \$ O( z! c6 g- if [ "$ipv6" = "$current_ipv6" ]
$ }6 k0 v( h' D0 [9 R- j - then Y0 h/ ?* a3 D( |. A9 L+ d
- echo "skipping"8 w3 O( Z8 O) N$ }- Q. ]* ?1 T; s
- fi
. m$ A' b3 z5 r+ i( K" ~8 W: p - # fix when A record removed by manual dns is always update error
2 T _3 d' J% U" G! X! o& h - else
+ {, ~5 Y8 Y" c - unset aliddnsipv6_record_id% Y8 ?9 _0 b( y9 N: r* w: W0 ]
- fi
& S0 r5 v, o- L% v6 A7 b+ A
9 @+ x# o# B4 e8 W- 9 a- Y+ d% m l6 v1 @
- timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`; L8 J! q$ C' S( ^1 u
p4 O* o- e5 E- % Q# @' F5 @( J
- urlencode() {
4 Z# M8 K5 |3 }: U - # urlencode <string>
) z* l& ? c: m# G - out=""
S* ]' f. t, t0 A E+ B - while read -n1 c6 c0 R7 a H3 q/ F
- do
6 o1 e7 W g% p! \( F1 a- l5 c0 c* ` - case $c in% C( E! E+ a9 G, P
- [a-zA-Z0-9._-]) out="$out$c" ;;# n4 x) A, q5 k
- *) out="$out`printf '%%%02X' "'$c"`" ;;
7 i) p2 {8 _! w& ?/ j - esac
! I- x) N/ G2 X7 R - done
# `: n8 i) ]* f5 N/ m- r - echo -n $out
( V3 y1 ]! c F- Z8 H - }
5 G( d j6 n9 R' R9 r - 7 f* @3 ^2 Y4 k5 O( k ~( s$ N; ~! i
- enc() {8 n Y; z: R, c/ ~
- echo -n "$1" | urlencode( W, n0 x+ p/ t8 m- ~9 n9 y: F" z
- }& |0 d) D2 z8 K
2 q6 T( B: x% n3 H- send_request() {' G v; x+ {0 _' n1 m* p
- local args="AccessKeyId=$aliddnsipv6_ak&Action=$1&Format=json&$2&Version=2015-01-09"% |% C9 x5 N) [6 r6 D4 G% e
- local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddnsipv6_sk&" -binary | openssl base64)
& B! a/ a6 u; w: L* @/ W" R) N7 z - curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"/ W# `& W# Z+ q6 O/ ]0 h
- }7 G; K5 P! x2 _4 c, p% k
( ~0 ^! V1 o' T% `0 X/ c7 R5 c- get_recordid() {, F, P" v2 U l* l$ P( O
- grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'; C; V4 r2 n( Q
- }. F" e( C8 T2 V/ j; h+ L! o
$ L5 R9 C) K7 F: g; d- query_recordid() {
5 p8 U9 A0 Q1 o0 h/ w+ \ - send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddnsipv6_name&Timestamp=$timestamp&Type=AAAA"% H- ]/ U8 S/ d- B7 i5 k, h
- }
' R1 f3 w* d5 z" l1 V$ B$ G
( u, |! h: U: c! ]- update_record() {
1 ]1 x/ `1 E# Z C: y; C6 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)"0 v9 o: @3 c5 _- l2 v' e ^5 R
- }2 w; Y- p4 M( o0 N7 m! P. ^
% T" N: q- Q2 m6 O" v* [. c- add_record() {
0 R$ T. o+ S/ Z9 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)"
: Z d8 u; x, d/ n3 s' D! D - }6 _5 A: p4 M( Y0 y' @2 x8 H
1 |' T$ q" ?! R% z# d2 i% F; Q( }- #add support */%2A and @/%40 record
) C- u* h; k2 T# E& N; D9 a - # y- p: M( V' l% K5 l) e
# M+ G! i5 L+ F- o, g2 M- if [ "$aliddnsipv6_record_id" = "" ]
+ Q3 d) e. b% i7 A8 S9 }* A0 T9 s - then
) t; u( G! F+ n. q& M - aliddnsipv6_record_id=`query_recordid | get_recordid`* l& h7 ?8 `8 k8 {
- #echo '-----------------' $aliddnsipv6_record_id+ g9 R' u, @+ X- k
- fi
0 j* F! U6 F; x" I- t3 m2 R0 v, I& w - if [ "$aliddnsipv6_record_id" = "" ]4 f$ f4 |+ f! U
- then
' Z: a4 B [: w. l1 Z7 I, x - aliddnsipv6_record_id=`add_record | get_recordid`
" |% u9 C [2 ]. V8 x& j& T& b1 g - echo "added record $aliddnsipv6_record_id"+ V) Y9 z: q' W) P; c+ v: \( W
- else3 v5 k2 f2 Q; ~* t2 p
- update_record $aliddnsipv6_record_id
0 K* o6 S, p) {3 z: K - echo "updated record $aliddnsipv6_record_id"9 P' E, H h V9 r- y, o
- fi
. g3 W5 i2 }( U% a& _2 Z
[8 A+ l4 y: C: ?
复制代码
& F$ P: ?3 N& ]* `( N8 C" G5 \8 x( ]) Y# `8 J
7 U0 A& }7 T& I( R1 j' B
|
|