n1折腾记3

由于家中是移动公司网络,故无法申请公网ip,只得利用ipv6实现外网访问内网。
具体方法是:
1.内网机器自动执行ifconfig命令,获取ipv6地址
2.内网机器利用python程序实现自动发送到自己指定的邮箱
3.上述发送过程每天定时执行
具体python为:
/home/getip.py

#内网ipv6连接
#通过ifconfig定时执行,发送邮件,实现外网获取内网设备的ipv6信息
#中移动网络下,ipv6每隔一定周期会变化
import os
import re
import smtplib
 

# 此处一定要绝对路径
output = os.popen("/usr/sbin/ifconfig").read()
print(output)

 
my_sender = '***@sina.com'
receivers = ['****@163.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
# 第三方 SMTP 服务
my_user="smtp.sina.com"  #设置服务器
mail_user="****"    #用户名
my_pass="*****"   #口令 
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.utils import parseaddr,formataddr
import smtplib
from_addr=my_sender#用来发送邮件的邮箱地址
password=my_pass#邮箱密码或者是授权密码
to_addr=receivers#目标邮箱地址
smtp_server='smtp.sina.com'#这里是新浪的SMTP服务器地址
#发送的信息格式
content=MIMEText(output,'plain','utf-8')
msg=MIMEMultipart()
msg['From']=Header(from_addr)#定义发件人
msg['Subject']=Header('get-ip','utf-8')#定义邮件名
msg.attach(content)#加上邮件的内容
try:
    server=smtplib.SMTP()
    server.connect(smtp_server,25)#连接SMTP服务器
    #server.set_debuglevel(1)#打印调试信息
    server.login(from_addr,password)#登陆邮箱
    server.sendmail(from_addr,to_addr,msg.as_string())#发送邮件
    print("Send successfully!")
except smtplib.SMTPException as e:
    server.quit()#退出
    print("发送失败")


参考:Python实现SMTP协议发送邮件(网易、新浪、qq)

定时发送:
利用crontab
crontab -e
每五分钟执行

*/5 * * * * /usr/bin/python3 /home/getip.py

每6小时执行

0 */6 * * * /usr/bin/python3 /home/getip.py
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值