Skip to content

Instantly share code, notes, and snippets.

@mike-zhang
Created November 15, 2012 15:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mike-zhang/4079260 to your computer and use it in GitHub Desktop.
Save mike-zhang/4079260 to your computer and use it in GitHub Desktop.
检测动态域名并上报IP
#!/usr/bin/python
import smtplib,re,urllib2,time
import socket
from subprocess import Popen, PIPE
smtpServer='smtp.163.com'
smtpPort='25'
sender = 'XXXXX@163.com'
senderPasswd = "XXXXX"
receivers = ['XXXXX@gmail.com']
checkTime = 60 * 10 # seconds
def getPublicIp():
return re.search('\d+\.\d+\.\d+\.\d+',urllib2.urlopen("http://www.whereismyip.com").read()).group(0)
def getMailContent(publicIp):
msg2Snd = "From: <" + sender + ">\n"
msg2Snd += "To: <" + receivers[0] + ">\n"
msg2Snd += "Subject: ipReport\n\n"
msg2Snd += "private IP : " + re.search("\d+\.\d+\.\d+\.\d+",Popen("ifconfig", stdout=PIPE).stdout.read()).group(0) + "\n"
msg2Snd += "public IP : " + publicIp + "\n"
return msg2Snd
while True:
try:
publicIp = getPublicIp()
if publicIp==socket.gethostbyname('XXXX.oicp.net'):
time.sleep(checkTime)
continue
smtpObj = smtplib.SMTP(smtpServer,smtpPort)
smtpObj.ehlo()
smtpObj.login(sender,senderPasswd)
smtpObj.sendmail(sender, receivers, getMailContent(publicIp))
print "Successfully sent email"
except :
print "Error: unable to send email"
time.sleep(checkTime)
@mike-zhang
Copy link
Author

检查动态域名变化失效时(即:获得的公网IP与动态域名的IP不一致),上报主机ip地址,发送到指定邮箱。

@mike-zhang
Copy link
Author

检查动态域名失效时(即:获得的公网IP与动态域名的IP不一致),上报主机ip地址,发送到指定邮箱。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment