- UID
- 1
- 阅读权限
- 255
- 注册时间
- 2006-7-24
- 最后登录
- 1970-1-1
- 在线时间
- 小时
TA的每日心情 | 开心 2013-11-21 01:25 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.注册阿里云账号。
; i9 F+ O- {( i! ]# D# O/ v2.注册一个域名。
6 F/ X6 f8 P7 s- f5 A w1 W% M( q, Y6 G' N( {* J
如果域名不在阿里云解析托管,需要先转过去,具体方法是联系域名提供商修改域名的DNS服务器,修改方式参考这里:https://help.aliyun.com/knowledge_detail/39844.html( N1 e: `* x9 Y- k Z! Q$ ~
然后去控制台找到云解析,将域名添加进去;2 l1 ^; a5 P/ |6 V& d C
7 q$ e! b2 Q+ J3 ?
! q7 {. N; ?* w( x( `3 s7 f. ]/ M
3.到阿里云控制中心找到access key和secret并保存下来(强烈建议遵循阿里云安全最佳实践的说明 ,使用RAM子用户的AccessKey);
6 A1 J* t! }2 }& \/ ~' Q2 B
9 `% s' E5 F/ T7 F4 r4 ^8 u1 p8 e- g1 Q
4.到群晖控制中心找到任务计划新增一个计划。
: H4 b& O* o+ _" M- }新增->计划的任务->用户自定义脚本
" O5 h+ i7 ]: N' `& |! E3 z7 A
4 a: N- w9 J# w4 U' S1 r, P# H9 @/ Q
3 H: @* W8 O9 G7 M/ |9 t a& G
设置10分钟定时
# j: u3 O# k, k) U q
7 o) { E! V8 q( {6 _/ F& F4 _
* `6 a( h! W2 U9 ]) b8 f& g
! h n% K! K$ T. p; J4 \复制以下内容,根据自己的情况修改中文部分并添加到任务设置自定义脚本' K9 x) j/ u3 y0 m! ]+ C6 y
* j1 j& O* D. o" Y9 o# D4 T- #!/bin/sh) A$ D o! R' v, a# z
- aliddns_name="你的域名前缀"# V8 j7 E4 }4 r
- aliddns_domain="你的域名"" X! N9 e# S% V+ k
- aliddns_ak="你的AccessKeyId"* Q% O% n+ r! `* {2 L
- aliddns_sk="你的AccessKeySecret") B- V7 u# A3 `7 k/ P' A* L
- $ O* T8 L& [/ Y' R. P2 s E' g
- aliddns_curl="curl -s whatismyip.akamai.com"8 }1 T" v- y0 B/ J# b
- aliddns_dns="8.8.8.8"
8 H/ I1 ~% q, U8 p - aliddns_ttl="600". B& P" j0 U* F) s: d8 U
-
4 \& u3 I+ Q0 F9 ~ - ip=`$aliddns_curl 2>&1`* @: X6 h; x0 [3 \# y" S s% _- k
- . l, ] q0 M+ P
- current_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`( Q) ^" W7 W' ]( V
-
, D" s! D& Q+ h/ P- s+ M8 o& b* u) r; L - if [ "$?" -eq "0" ]9 Z( I! p- ?9 l8 |" B, y
- then
% u8 S9 m& r8 j - current_ip=`echo "$current_ip" | grep 'Address 1' | tail -n1 | awk '{print $NF}'`
$ H% I" P1 n) ~' r) d+ _& }$ h - if [ "$ip" = "$current_ip" ]$ Q2 Q) V" K: }: H6 M+ w
- then( c* `( d+ ]; M+ M4 @- N
- exit 0
* F, m( @: D5 L$ ]& l3 a2 P - fi ' y( Y3 `% T( S9 ~) J
- fi3 e4 J' {$ m9 G4 I( e* d* P
-
: y, S! W1 O. d0 `1 b6 A - timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`6 _0 l- y" j0 c/ }% [( z, Q
-
, A% g( j, I' j2 @1 Q: Q - urlencode() {
0 V% L, ^# V* m4 T - # urlencode <string>! c% Q, `) _5 j* K6 p1 k
- out=""1 g4 B# c- |) a6 ^1 _$ C! N1 T2 c
- while read -n1 c
$ `, U) ^: @4 H; F0 e6 Z - do
) r( x& Z* d! n. a0 S/ \ - case $c in( f M& Y ^7 b
- [a-zA-Z0-9._-]) out="$out$c" ;;7 J5 Y# \3 n2 v9 `4 K4 ^
- *) out="$out`printf '%%%02X' "'$c"`" ;;
0 p. J5 n1 L1 S8 E6 g - esac
/ d' F5 e0 L! {" }8 b - done
4 _3 [& y& N9 R% C' ` - echo -n $out
; J$ A I( s7 h) ^: R1 Q - }) n# w# N7 l% t" D6 A3 j8 N
- enc() {
' w% h9 s% b" W6 R( l - echo -n "$1" | urlencode
3 m" z& Y' Z% ^: K" b3 g* l* a - }9 s) G. X( {' X+ h& |% P4 k/ l5 {
- send_request() {
0 r5 X W n7 P$ O3 E - local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"! s7 q( ]7 K# ]4 k0 S5 k
- local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)+ G9 Y4 D. c, b+ M9 D8 O
- curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")" L. v7 d8 q; S2 S( R
- }
$ {0 Y9 H- r8 ^4 [7 N t - get_recordid() {
! |) c c# V/ w# J - grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'0 z* @( t z' a9 n
- }
+ C( d9 U! s0 P4 b - query_recordid() {
9 G' n, a9 E# y - send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name.$aliddns_domain&Timestamp=$timestamp"1 }& D9 a& h% [
- }# u7 K8 E' {$ J9 U, g7 k
- update_record() {% ]2 d j$ h2 m7 L
- send_request "UpdateDomainRecord" "RR=$aliddns_name&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"
7 Z+ l6 v% C9 U# O3 c9 Y8 C3 K5 i - }
6 E9 u) q4 J# q( H - add_record() {
, A& G5 w! o/ E8 a9 s) M - send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_name&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"2 g: r; \8 x' A3 A. O0 r
- }
& j0 s6 J6 W8 S$ W - if [ "$aliddns_record_id" = "" ]& f3 W- H$ L( k6 u/ h+ F
- then3 o0 i1 z4 k* e5 f$ g: q
- aliddns_record_id=`query_recordid | get_recordid`
$ G$ Y2 T, t' I8 F' x* R' y - fi$ g5 r# u6 W+ C6 C g* z# }
- if [ "$aliddns_record_id" = "" ]
( e: W, ~) f/ I - then
( M+ p5 s3 R0 o - aliddns_record_id=`add_record | get_recordid`" l5 O! Z Z: A
- echo "added record $aliddns_record_id"5 b! g8 D- `# O. C( o/ R
- else9 [3 i% A$ ]6 e5 Y
- update_record $aliddns_record_id
& |+ S1 ^! u0 s0 a4 A I - echo "updated record $aliddns_record_id"% n* R! U/ d5 @0 r0 ~1 @# C
- fi
复制代码 & V5 G2 ~6 ~5 g( }; ^) o6 o3 W
- C f3 J) u j9 d8 ^
, x8 L0 T6 u4 g7 Z+ u5.设置好端口转发。
3 I( M% ^- b$ C- X5 v
* o0 q$ [$ Y% ^如何设置群晖端口转发请自行百度。4 k5 k3 k: m W5 Y2 W
w2 o( g6 [$ N6 d( L$ x" e5 D0 j0 Y; ]6 }8 n" g
|
|