加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

python获取公网IP,并发送邮件

(2023-11-03 11:42:31)
# 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)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有