# coding=gb2312
import requests
import json
from urllib.request import urlopen
import os
import time
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# 两个获取ip地址的网站
ip_url_1 = 'https://api.ipify.org/?format=json'
ip_url_2 = 'http://jsonip.com'
# 配置文件名
config_file_name = 'public_ip.json'
mail_info = {
'recv_address':
'28@qq.com',
'sender_name':
'r1@sina.cn',
'sender_pwd': '6685c65',
# 授权密码(去邮箱网站设置),非登录密码
'smtp_server':
'smtp.sina.cn',
'subject':
'IP信息已更新',
'content': '您的公网IP信息:
{},其他相关信息如下:{}'
}
# 检查配置文件及其权限
def check_configfile_exist():
file_exist =
os.access(config_file_name, os.F_OK)
file_read = os.access(config_file_name,
os.R_OK)
file_write =
os.access(config_file_name, os.W_OK)
return{'file_exist':file_exist,'file_read':file_read,'file_write':file_write}
def generate_configfile(ip_addr):
config_construct =
{
"ip_addr": ip_addr
}
with
open(config_file_name, "w", encoding='utf8') as fp:
fp.write(json.dumps(config_construct,indent=4,
ensure_ascii=False))
fp.close()
def send_message(content):
# 设置发送邮件的内容
msg = MIMEText(content,
'plain', 'utf-8')
msg['From'] =
Header(mail_info.get('sender_name'))
msg['Subject'] =
Header(mail_info.get('subject'), 'utf-8')
msg['To'] =
Header(mail_info.get('recv_address'))
# 发送邮件
smtp =
smtplib.SMTP()
smtp.connect(mail_info['smtp_server'])
smtp.login(mail_info['sender_name'], mail_info['sender_pwd'])
smtp.sendmail(mail_info['sender_name'], mail_info['recv_address'],
msg.as_string())
###################################################################################################################
localtime = time.localtime(time.time()) # 打印本地时间
print("\n" + time.asctime(localtime))
# 通过两个网站获取ip地址
resp = requests.get(ip_url_1)
info = resp.json()
my_ip_1 = info.get('ip')
resp = requests.get(ip_url_2)
info = resp.json()
my_ip_2 = info.get('ip')
if (my_ip_1 == my_ip_2):
ip_addr = my_ip_1
else:
ip_addr = "ip_1 :" +
my_ip_1 + "\n" + "ip_2 :" + my_ip_2
print("\n" + ip_addr)
if(check_configfile_exist()['file_exist'] &
check_configfile_exist()['file_write']):
config_file =
open(config_file_name,'r')
read_context =
json.load(config_file)
old_ip =
read_context['ip_addr']
config_file.close()
if (old_ip ==
ip_addr):
print("ip address is up-to-date")
else:
content = "old ip address is : " + old_ip + '\n'
+ "new ip address is : " + ip_addr
#sendEmail2(mail_host,mail_user,mail_pass,receivers,"ip",content)
send_message(content)
generate_configfile(ip_addr)
else:
generate_configfile(ip_addr)
content = "new ip
address is : " + ip_addr
#sendEmail2(mail_host,mail_user,mail_pass,receivers,"ip",content)
send_message(content)
加载中,请稍候......