自动更新和发送IP地址

时间:2012-05-03 13:43:45

标签: python networking automation

我在具有ADSL连接的计算机上运行SSH。每次机器有新的IP地址时,我都会使用此脚本向我发送电子邮件。

我无法访问该机器。我把脚本给了一个朋友,所以我不能执行调试来弄清楚这个脚本有什么问题。我现在正在使用大学连接,它有一个静态IP地址。没有必要在它上面运行脚本。

所以有任何建议如何改进/修复脚本。有时我会收到无效的IP地址,或者有时IP地址会改变,但我没有收到电子邮件。我应该使用其他方法进行这种自动化吗?

import urllib
import time
import smtplib

fromaddr = '***@gmail.com'  
toaddrs  = '***@gmail.com'    
ip = ""

username = '****'  
password = '****'  
f = False

def update():
    global ip,f
    #print "sleeping 5 seconds"
    time.sleep(5)
    while not f:
        try:
            f = urllib.urlopen("http://automation.whatismyip.com/n09230945.asp")
        except IOError, e:
            print "no internet !"
            time.sleep(5)

    if not ip and f:
        ip = f.read()
        print "getting the first ip"
        print ip
        sendmail(ip)
        print "mail sent"

    else:
        if f:
            ip2 = f.read()
            #print ip,ip2
            if ip != ip2 and ip and ip2:
                ip = ip2
                print "new ip",ip,"sending mail"
                sendmail(ip)
            else:
                print "ip is the same"
            f = False
    #print ip

def sendmail(ip):
    a = False
    while not a:
        try:
            #just to check if i have internet or not
            a = urllib.urlopen("http://automation.whatismyip.com/n09230945.asp")
            server = smtplib.SMTP('smtp.gmail.com:587')
            server.ehlo()
            server.starttls()
            server.ehlo()
            server.login(username,password)
            server.sendmail(fromaddr, toaddrs, ip)  
            server.quit()
        except IOError, e:
            print "no internet"
            time.sleep(5)
            #sendmail(ip)


print "program started"

while(1):
    update()

1 个答案:

答案 0 :(得分:5)

我建议您经常点击服务器并被阻止...... http://forum.whatismyip.com/f14/pace-yourself-t6/

将您的第一个time.sleep(5)更改为time.sleep(300)