自己之前有通过企业微信自建应用发送信息通知的需求,但是后来企业微信修改了API访问验证,需要将服务器IP加入应用可信IP名单才可以正常使用。

但是我的服务器是架设在本地内网的,属于动态IP,经常变动。至于IP什么时候变了,变成什么了,经常需要手动查询,非常麻烦。

于是利用python写了一段代码,可以实现自动查询服务器外部IP地址并通过邮件发送信息通知。收到邮件后可以知道动态IP已经变动,这样可以直接登陆企业微信添加到可信IP列表里面即可。

代码如下:

 

				
					# coding = utf-8

import requests
import smtplib
from urllib.request import urlopen
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 获取最新IP地址信息
def get_public_ipv4():
    try:
        response = requests.get("https://ipv4.icanhazip.com")
        ipv4_address = response.text.strip()
        return ipv4_address
    except Exception as e:
        print(f"Error: {e}")
        return None

# 将获取的IP地址自动保存到同目录的ip.txt文件,需要先自行创建ip.txt文件
def save_ip_to_file(ip):
    try:
        with open('ip.txt', 'w') as file:
            file.write(ip)
            print('IP地址已保存到ip.txt文件。')
    except Exception as e:
        print('保存IP地址失败:', str(e))

public_ip = get_public_ipv4()
if public_ip:
    # 保存IP地址到文件
    save_ip_to_file(public_ip)

if __name__ == '__main__':
    public_ipv4 = get_public_ipv4()
    if public_ipv4:
        print(f"服务器最新IP地址: {public_ipv4}")
        
# 发送邮件通知
sendAddress = 'XXX@XXX.com'     #发件邮箱
password = 'XXX123456'          #发件邮箱密码
server = smtplib.SMTP_SSL('smtp.XXX.com', 465)      #自行替换发件邮箱的SMTP地址
loginResult = server.login(sendAddress, password)
print(loginResult)

body = '服务器最新IP地址是: {}'.format(public_ipv4)
msg = MIMEText(body, 'plain', 'utf-8')
msg['From'] = 'XXX@XXX.com'     # 发件邮箱
msg['To'] = 'XXX@XXX.com'       # 收件邮箱
msg['Cc'] = ''                  # 抄送邮箱
msg['Subject'] = '服务器IP更新通知'

server.sendmail(sendAddress,['XXX@XXX.com'],msg.as_string())    #自行替换收件邮箱地址
print('发送成功')
server.quit()
				
			

 

将这部分代码保存为.py文件,利用青龙面板可以添加定时执行,这样就实现了每天自动查询发送功能。

青龙面板操作要点:定时任务-新建任务-依次输入任务名称、任务命令、定时规则-确定即可。

其中记得先上传上面的.py脚本到青龙目录,定时规则推荐每隔2-3天执行一次。

 

以我的为例:

任务名称:服务器IP更新查询通知

命令:task taskjob/ip_notice1.py

定时规则:0 10 */2 * *

Share the Post:

更多文章

大海

今年看到日本核废水排海,让我既震惊又愤怒。 我是很喜欢大海的,我想很难有人不喜欢大海。 我

Read More
Back To Top