|
原创 无双
www.forumer.com/mushuang
www.loveunix.net
内容说明
假如我在3322.org上有两个帐号
帐号1wushuang 口令为wushuangpassword
这个帐号下有两个域名loveunix.8800.org,loveu.3322.org
帐号2wushuang2口令为password2
这个帐号下有一个域名iloveunix.3322.org
然后想一个脚本自动注册这两个帐号下的动态域名
并且开机后就可以注册 并定时更新(使用的网通拨号 分配的IP会在一段时间后收回 )
脚本如下
代码
#!/usr/bin/perl
#
#descript: auto report dyn site info to server,here is www.3322.org
#auth mushuang(lizl@yztelecom.com)
#2004-02-04 rewrite it with perl
use strict;
# define too marco: DOMAINNAME and IPADDRESS,replace it with real value
my $dyntemplate=q(http://www.3322.org/dyndns/updat ... SS&wildcard=OFF);
#define my login info,you can add any dyn sites here,first is
#logininfo,the rest is dyn site name
my $allsiteinfo=[
['wushuang:wushuangpassword','loveunix.8800.org','loveu.3322.org'],
['wushuang2:password2','iloveunix.3322.org'],
];
my $localip=getip();
$dyntemplate=~s/IPADDRESS/$localip/;
my $info;
foreach $info (@$allsiteinfo){
reporttoserv($dyntemplate,@$info);
}
# get local ip address
sub getip(){
my $ip=qx(/sbin/ifconfig ppp0);
$ip =~m/inet addr\d+\.\d+\.\d+\.\d+)/;
print "ip is:\n$1\n";
return $1;
}
#report my dyn site config to server
sub reporttoserv(){
my $httpref =shift(@_);
my @siteinfo=@_;
my $login = shift(@siteinfo);
my $dnsname;
for $dnsname (@siteinfo){
my $link =$httpref;
$link =~s/DOMAINNAME/$dnsname/;
system("/usr/bin/lynx -mime_header -auth=$login -dump \"$link\"");
print "/usr/bin/lynx -auth=$login -dump $link\n";
}
}
保存成a.pl
使用时使用perl a.pl就可以
知道了这就可以自己修改了
那个数组的格式如下
用户名:口令,站名1,站名2,站名3
如果只有一个站名 那就写一项好了 如果有多个站名 就在后面一直添加
如果有多个帐号 那就添加多个数组 如果只有一个帐号就只添加1个数组
执行:
1 系统启动时执行
我的环境为debian,启动脚本是/etc/init.d/rcS
在/etc/rcS中添加一行如下
/bin/sh /etc/init.d/rc.local(启动时自动执行这个 偶不喜欢修改系统脚本)
然后在这个脚本下添加一行
at -f /home/lizl/perl/autorun.sh now+3minutes
系统启动时 如果直接执行的话不成功 所以我不得不使用at 让它在系统启动3分钟后启动
(应该是因为PPPOE还没有启动 )
注意脚本应该是所有人都可读可执行
2 自动执行 这不用说当然是使用cron了
*/30 * * * * root /home/lizl/perl/autorun.sh >/dev/null 2>&1
autorun.sh中内容如下
/usr/bin/perl /home/lizl/perl/a.sh
OK
完成 |
|