监控域名可用性并自动发信

看上一个域名,恰好处于pendingDelete状态,就是别人不要了,但还没放出来 - 估计这域名比较火,一出来很有可能会被大家抢走,于是想写个自动运行的crontab来监控其可用性,并在可用时自动发信通知。

基于目前linux下可用的命令/工具,这可以是一个简单的shell script,但我还是用自己比较熟悉的perl把这些命令粘合起来【1】 - 我的观点是shell script只是用来配置环境的,如export一些变量,设置一些alias之类的,其他一些逻辑,文本操作,perl做的很好了,而且win+linux两个平台下都可用,就不费那个神了。

【用curl获得网页内容】

太简单了:

curl www.sina.com.cn

就能返回整个页面的html代码

要是没有curl,sudo apt-get install一下

【用iconv转码】

很多中文网页的charset都是gb2312, 要在script中正确匹配,或者显示,需要转成unicode:

iconv -f gb2312 -t utf8

【解析内容并用mail发信】

针对每一行,解析需要关注的信息,比如我这里要关注的是这个域名的状态:

my @page = `curl $targetPage | iconv -f gb2312 -t utf8`;
chomp @page;
my $domainStatus;
for my $line (@page)
{
        if($line =~ /Status: (\w+)/)
        {
                $domainStatus = $1;
        }
}

然后,如果状态改变,就发mail通知:

if ($domainStatus eq "pendingDelete")
{
        print "The domain is still in pending state\n";
}
else # as soon as the status is changed away from "pendingDelete", notify us!
{
        my $message =  "Hi, Baiyan:\n The domain: $targetPage is ready, please register ASAP\n";
        my $sendmail = "echo '$message' | mail -s 'Urgent: Please register the domain!!!' name\@domain.com";
        print $sendmail;
        print `$sendmail`;
}

需要注意的是,为了能从本机通过mail命令发送邮件,你需要配置好你的Mail Transfer Agent,这里用的是postfix:

sudo vi /etc/postfix/main.cf

之前因为我的 myhostname, mydestination的格式不符合要求(name@machine-name), 被网易邮箱给拒了:

From MAILER-DAEMON Sat Dec 1 21:22:58 2012
From baiyanh@baiyanh-VirtualBox

给来改成了:

From MAILER-DAEMON Sat Dec 1 23:10:20 2012
From baiyanh@baiyanh.com

就可以了,但是发给qq邮箱还是有问题:说我的邮件内容像是自动发的。。。

具体发送失败,可以看:(事实上,用mutt格式会更好些)

$ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/baiyanh": 11 messages 11 new
>N 1 MAILER-DAEMON@bai Sat Dec 1 21:22 73/2597 Undelivered Mail Returned to Sender
N 2 MAILER-DAEMON@bai Sat Dec 1 21:23 73/2576 Undelivered Mail Returned to Sender
N 3 MAILER-DAEMON@bai Sat Dec 1 21:35 72/2556 Undelivered Mail Returned to Sender
N 4 MAILER-DAEMON@bai Sat Dec 1 22:56 70/2302 Undelivered Mail Returned to Sender
N 5 MAILER-DAEMON@bai Sat Dec 1 22:57 70/2302 Undelivered Mail Returned to Sender
N 6 MAILER-DAEMON@bai Sat Dec 1 22:57 70/2302 Undelivered Mail Returned to Sender
N 7 MAILER-DAEMON@bai Sat Dec 1 22:58 70/2302 Undelivered Mail Returned to Sender
N 8 MAILER-DAEMON@bai Sat Dec 1 22:59 70/2302 Undelivered Mail Returned to Sender
N 9 MAILER-DAEMON@bai Sat Dec 1 23:01 73/2470 Undelivered Mail Returned to Sender
N 10 MAILER-DAEMON@bai Sat Dec 1 23:07 74/2492 Undelivered Mail Returned to Sender
N 11 MAILER-DAEMON@bai Sat Dec 1 23:10 75/2605 Undelivered Mail Returned to Sender
& 1

然后输入数字读取相信邮件,可以看到详细的错误信息,比如163即使告诉你:http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

【设置cron job每个5分钟监控】

*/5 * * * * ~/tools/monitor

【问题:如何处理ajax】

curl只能拿到刚load时的web页面页面,如果有ajax存在,那些内容是无法拿到的,比如万网的注册信息:

http://www.net.cn/domain/searchresult/?keyword=douban&suffix=.com&domaintype=en#searchAnchor

后来用了朋友的网站上的信息,可以直接拿到:

http://www.kingtoo.com/reg/whois.asp?domain=douban.com

 

这是个需要解决的问题,如果目标网站只在ajax中披露重要信息,就无法拿到了。


【1】https://gist.github.com/4186334

 

 

posted @ 2012-12-02 09:20  lzprgmr  阅读(619)  评论(0编辑  收藏  举报

黄将军