python3练习-发送IP地址到邮箱
需求:
从外网通过VPN访问内网,并登录电脑A。在电脑A通过共享文件夹(需要\\IP的方式访问)访问到内网电脑B,由于电脑B的WI-FI的IP地址会变化,所以当电脑B的I访问路径需要获知电脑B的最新IP
import socket
import smtplib
import json
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import threading
now_ip = ""
mail_param_json = ""
# 内网B为win7操作系统,内网IP以10开头,取WIFI-IP
def _get_ip_win():
ips = socket.gethostbyname_ex(socket.gethostname())
for s in ips[2]:
if s.startswith(''):
return s
#发送邮件到指定的邮箱
#配置文件为json字符串:'{"from_addr": "", "password": "", "to_addr": "", "smtp_server":""}'
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr)) def send_mail(json_param_str=None):
if json_param_str != None and isinstance(json_param_str, str):
e_param = json.loads(json_param_str)
from_addr = e_param.get('from_addr')
password = e_param.get('password')
to_addr = e_param.get('to_addr')
smtp_server = e_param.get('smtp_server')
msg = MIMEText('ip address changed to : ' + _get_ip_win() + '\r\n', 'plain', 'utf-8')
msg['From'] = _format_addr('Reboot <%s>' % from_addr)
msg['To'] = _format_addr('Reboot <%s>' % to_addr)
msg['Subject'] = Header('NOTICE!!!--PC IP CHANGED', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
else:
pass
#定时检查IP是否有变化
def checkIP(start_ip):
global now_ip
if start_ip != now_ip:
global mail_param_json
send_mail(mail_param_json)
print("发送邮件,旧IP:",now_ip,"---新IP:",start_ip)
now_ip = start_ip
else:
print("IP地址未发生变化,旧IP:", start_ip, "---新IP:", now_ip)
new_ip = _get_ip_win()
t = threading.Timer(3600.0, checkIP,(new_ip,))
t.start()
#初始化 读取配置文件
if __name__ == '__main__':
with open('./config', 'r') as f:
mail_param_json = f.read()
start_ip,now_ip = _get_ip_win(),_get_ip_win()
checkIP(start_ip)
PS:
1、仅实现的基本功能,代码不够规范
2、待修改增加log记录,配置文件写入到sqlLite中
3、方法需要重构,不灵活
python3练习-发送IP地址到邮箱的更多相关文章
- python3练习-发送IP地址到邮箱(使用日志)
看了下python下的logging模块,和java的log4j差不多,把之前的代码改为使用log配置的方式实现功能(需求和之前的相同,地址"http://www.cnblogs.com/G ...
- 树莓派开机发送IP地址到邮箱
树莓派使用的wifi联网,在宿舍使用的是公共网络,不能设置静态ip,每次树莓派上电开机后ip地址可能会改变,所以让树莓派开机联网后自动发送ip地址到QQ邮箱 一.安装mutt和msmtp mutt: ...
- 让树莓派自动上报IP地址到邮箱,二代B
由于我使用树莓派的场景大多数是在没有显示器.只用terminal连接它的情况下,所以,它的IP地址有时会在重启之后变掉(DHCP的),导致我无法通过terminal连接上它.然后我又要很麻烦地登录路由 ...
- 树莓派获取ip地址发送到邮箱
公网 ip.sh curl http://members.3322.org/dyndns/getip >>/email/ip.log python /email/mail.py ##### ...
- C#服务器获取客户端IP地址以及归属地探秘
背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ...
- 常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等
<script type="text/javascript">/* * 手机号码格式 * 只允许以13.15.18开头的号码 * 如:13012345678.15929 ...
- php使用过滤器filter_var轻松验证邮箱url和ip地址等
以前使用php的时候还不知道有过滤器filter这玩意,那时候判断邮箱.url和ip地址格式是否符合都是用正则表达式.后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库过滤器filter来 ...
- 验证中文、英文、电话、手机、邮箱、数字、数字和字母、Url地址和Ip地址的正则表达式
Helper类代码 public class Helper { #region 单列循环 private Helper() { } private static Helper instance = n ...
- 常用正则表达式:手机、电话、邮箱、身份证、IP地址、网址、日期等
转载源:http://blog.csdn.net/lun379292733/article/details/8169807 <script type="text/JavaScript& ...
随机推荐
- python之数据库连接池DBUtils
DBUtils 是Python 的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: DBUtils :提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接 ...
- Ch04 映射和元组 - 练习
1. 设置一个映射,其中包含你想要的一些装备,以及它们的价格.然后构建另一个映射,采用同一组键,但在价格上打9折. import scala.collection.JavaConversions.as ...
- python操作wifi
python连接wifi需要使用pywifi包,可以用pip install pywifi安装 1.导入包 import pywifi,time #保存包中写义的常量 from pywifi impo ...
- 《linux就该这么学》开课,linux之路新开始
今天开课第一天,虽然不会有实实在在的干货知识,只要是了解一下linux和认证.所以我也简单说一下我的linux之路 linux我是无意接触到的,因为工作,我接触的服务器较多,但是都是linux系统,记 ...
- 小程序canvas生成海报保存至手机相册
小程序canvas画图保存至手机相册 (1)可直接展示生成的海报 .因手机分辨率不同可能导致生成的海报会有细微差别,这里隐藏canvas海报,页面正常设置海报样式保存时保存隐藏的canvas海报 (2 ...
- Python取整及保留小数小结
1.int() 向下取整 内置函数 n = 3.75 print(int(n))>>> 3 n = 3.25 print(int(n))>>> 3 2.round ...
- [转载]lib和dll文件的区别和联系
出处:https://blog.csdn.net/weiaipan1314/article/details/52252478 什么是lib文件,lib和dll的关系如何 (2008-04-18 19: ...
- 使用mybatis-generator插件自动生成代码的步骤
注意:首先你这个项目一定要是个maven项目 1.首先你需要在pom文件中导入相关的依赖,如下代码 <plugin> <groupId>org.mybatis.generato ...
- HTTPS(SSL / TLS)免费证书申请及网站证书部署实战总结
服务器环境:windows server 2008 + tomcat7 废话不多说,先看部署效果: 一.免费证书申请 Let's Encrypt 简介:let's Encrypt 是一个免费的开 ...
- pyCharm的第一个项目
首先打开编译器pyCharm 创建一个项目 在location :新建文件夹 在interpreter:指定python解释器的路径 python解释器下载官网: https://www.python ...