perl 切换 dnspod 域名记录
时间:2014-01-14 21:29:17
收藏:0
阅读:498
提供域名,dnspod 账户密码(毕竟dns密码比较重要 不能谁 cat一下都可以看到 需要base64加密),原IP,切换目标IP,
#!/bin/perluse
warnings;use
MIME::Base64;use
LWP;use
Encode;use
JSON;use
Data::Dumper;my
$ChangeDomain=‘linuxjs.com‘;my
$BeforeIP=‘XXX.XXX.XXX.XXX‘;my
$ChangeIP=‘XXX.XXX.XXX.XXX‘;my
$user= decode_base64("加密后的用户名字符串");my
$passwd= decode_base64("加密后的密码字符串");chomp($user,$passwd);sub
GetDomainID{ my
$browser
= LWP::UserAgent->new(agent
=> ‘checkdns.pl/1.0.0(hydezhao@gmail.com)‘); $response
= $browser->post( $url, [ login_email
=> $user, login_password
=> $passwd, format
=> ‘json‘, domain
=> $_[0] ] ); if
($response->is_success != 1) { print
"链接失败!\n"; exit; } else { my
$rs=$response->content; my
$json_text
= JSON->new->utf8->decode($rs); if
($json_text->{‘status‘}->{‘code‘} != 1 ) { print
$json_text->{‘status‘}->{‘message‘}."\n"; exit; } else { return
$json_text->{‘domain‘}->{‘id‘}; } }}sub
GetRecordId{ my
$browser
= LWP::UserAgent->new(agent
=> ‘checkdns.pl/1.0.0(hydezhao@gmail.com)‘); $response
= $browser->post( $url, [ login_email
=> $user, login_password
=> $passwd, format
=> ‘json‘, domain_id
=> $_[0] ] ); if
($response->is_success != 1) { print
"链接失败!\n"; exit; } else { my
$rs=$response->content; my
$json_text
= JSON->new->utf8->decode($rs); if
($json_text->{‘status‘}->{‘code‘} != 1 ) { print
$json_text->{‘status‘}->{‘message‘}."\n"; exit; } else { for
my
$record(@{$json_text->{‘records‘}}) { $id_name{$record->{‘id‘}} = $record->{‘name‘}."||".$record->{‘value‘}; } return
%id_name; } }}sub
UpdateRecord{ my
$browser
= LWP::UserAgent->new(agent
=> ‘checkdns.pl/1.0.0(hydezhao@gmail.com)‘); $response
= $browser->post( $url, [ login_email
=> $user, login_password
=> $passwd, format
=> ‘json‘, domain_id
=> $_[0], record_id
=> $_[1], sub_domain
=> $_[2], value
=> $ChangeIP, record_type
=> $_[3], record_line
=> ‘默认‘, ttl
=> ‘600‘ ] ); if
($response->is_success != 1) { print
"链接失败!\n"; exit; } else { my
$rs=$response->content; my
$json_text
= JSON->new->utf8->decode($rs); if
($json_text->{‘status‘}->{‘code‘} != 1) { print
"code:".$json_text->{‘status‘}->{‘code‘}." error:".$json_text->{‘status‘}->{‘message‘}."\n"; exit; } else { my
$message=$json_text->{‘record‘}->{‘name‘}."--->".$json_text->{‘record‘}->{‘value‘}; return
$message; } }}my
$id=GetDomainID($ChangeDomain);chomp
$id;#print "$id \n";my
%records= GetRecordId($id);while
(my
($k,$v)= each
%records
){ my
($name,$ip)= split(/\|\|/,$v); if
($ip
eq $BeforeIP) { chomp($name,$ip); print
"$name--->$ip\n"; print
"changing.....\n"; print
UpdateRecord($id,$k,$name,‘A‘)."\n"; }} |
这个脚本 配合宕机检测机制 触发执行 可以在无人值守的情况下 短时间内 切换故障机器 把所有域名 切换到 指定备份机器
原文:http://www.cnblogs.com/hydezhao/p/3513302.html
评论(0)