perl 切换 dnspod 域名记录
提供域名,dnspod 账户密码(毕竟dns密码比较重要 不能谁 cat一下都可以看到 需要base64加密),原IP,切换目标IP,
#!/bin/perl
use 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 $url='https://dnsapi.cn/Domain.Info';
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 $url='https://dnsapi.cn/Record.List';
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 $url='https://dnsapi.cn/Record.Modify';
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";
}
}
这个脚本 配合宕机检测机制 触发执行 可以在无人值守的情况下 短时间内 切换故障机器 把所有域名 切换到 指定备份机器
perl 切换 dnspod 域名记录的更多相关文章
- DNS域名记录
DNS域名记录 DNS数据库 在DNS的解析过程中用到域名的解析资源的记录,这个解析记录在DNS当中称为DNS数据库. 这个数据库又分为正解和反解,正解就是从主机名到ip的过程,反解就是从ip反响解析 ...
- 域名注册域名解析域名绑定 dns服务器解析 域名记录的添加 记录类型含义@ www 访问域名请求过程
创建一个web应用,简言之就是访问一个域名,可以到达一个地方,这个地方就是你存放供别人查看的文件的地方 就像一条绳,从这头拉一下,可以拉出来另一头的东西 主要有两个部分: 域名 虚拟主机(空间) 1. ...
- 常用域名记录解释:A记录、MX记录、CNAME记录、TXT记录、AAAA记录、NS记录
A记录 A记录是用来创建到IP地址的记录. A记录设置技巧 1.如果想创建不带www的记录,即ezloo.com,在主机记录中填写@或者留空,不同的注册商可能不一样. 2.创建多个域名到同一个IP,比 ...
- ProxySQL+MGR实现读写分离和主节点故障无感知切换 - 完整操作记录
前面的文章介绍了ProxySQL用法,这里说下ProxySQL中间件针对Mysql组复制模式实现读写分离以及主节点故障时能够自动切换到新的主节点,而应用对此过程无感知的功能.Mysql组复制(MGR) ...
- Windows环境下JDK的配置及多版本JDK切换的方法记录
(这里记录了笔者了解的关于JDK环境配置的信息,以及针对系统上存在不同版本JDK时所尝试的解决方案.具体来说,是已安装 JDK 8 后,又安装了 JDK 9 时所遇到的问题和尝试的解决方法.这次记录以 ...
- 淘宝 NPM 镜像站切换新域名啦
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 源起 淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前 ...
- 关于mha手动切换的一些记录(mha方案来自网络)
mha方案出自:http://www.cnblogs.com/xuanzhi201111/p/4231412.html 当主服务器故障时,人工手动调用MHA来进行故障切换操作,具体命令如下: 先停MH ...
- Perl 正则匹配经验记录
0.正则匹配字典:http://www.cnblogs.com/itech/archive/2010/03/19/1689793.html 1.$/=">";重新定义字符串分 ...
- 验证mongodb副本集并实现自动切换primary~记录过程
接 验证mongodb主从复制过程 1.创建数据目录 同 验证mongodb主从复制过程 的实验一样,本次实验也是采用直接指定启动参数来启动mongodb数据库,本次实验我们需要启动三个数据库,为了与 ...
随机推荐
- 弹出层提示,X秒后关闭
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- 初识Python-Python介绍
Python介绍 在了解了计算机以及操作系统的发展历程之后,又接触到了一门新的语音——Python,迈出了学习编程的第一步. 一.Python简介: Python(英国发音:/ˈpaɪθən/ 美国发 ...
- eclipse 创建maven web项目
参考:http://www.cnblogs.com/hongwz/p/5456616.html eclipse 创建maven web项目
- 【iOS】UITabView/UICollectionView 全选问题
UITabView/UICollectionView 全选问题 SkySeraph July. 30th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySera ...
- godaddy1美元虚拟主机
第一个域名是免费的 ftp连接:新建ftp账号,把配置文件导入相应的ftp客户端(user名可能有问题,使用非加密的模式) SSH连接: 1.开启SSH连接:http://godaddy.idcspy ...
- 增删改查--windows下mysql客户端--表的使用
>>>>>>>>>>>>>>>>>>>> selet 5种子句之where常用运 ...
- Codeforces Round #388 (Div. 2) - C
题目链接:http://codeforces.com/contest/749/problem/C 题意:给定一个长度为n的D/R序列,代表每个人的派别,然后进行发表意见,顺序是从1到n.每个人到他的回 ...
- Android下的屏幕适配
1080 100dp 300px720 100dp 200px 300px 1080px 比例是300/1080=0.277200px 720px
- Maven打包生成可运行bat/sh脚本文件
利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台. <plugin> <groupId>org ...
- 关于jquery简单操作简单表格
最近在摸索jquery中,想着学习过程中还是记下点自己的东西比较好,不管是日后自己查阅,亦或是对于他人有些许帮助. 也是一件两全其美的事情了. 下面我就简单 贴上自己的html中重要部分了. 具体实现 ...