LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1900|回复: 1

使用perl自动连接动态域名服务器

[复制链接]
发表于 2004-2-5 01:08:35 | 显示全部楼层 |阅读模式
原创 无双
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
完成
发表于 2004-2-5 16:48:23 | 显示全部楼层
呵呵,难得有无双兄的大作,精华!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表