NAS动态获取IPV6并通过邮件通知用户

前提条件:NAS处于IPV6公网

判断当前网络属于IPV4/V6

通过以下命令获取当前公网IP:

#windows cmd or linux bash
curl http://icanhazip.com

如果返回 xx.xx.xx.xx 那当前只有ipv4
如果返回xx:xx:xx:xx:xx:xx:xx:xx 那当前处于ipv6公网,返回值就是当前机器的ipv6地址

获取IPV6公网IP的方式

  1. 宽带
    博主当前用的是电信宽带,默认是v4私网+v6公网,光猫、路由器、NAS均支持IPV6,可以直接获取IPV6公网IP

  2. 手机
    手机获取的IPV6默认就是公网的,手机热点可以给NAS提供公网IPV6

打开NAS的ssh

NAS动态获取IPV6并通过邮件通知用户_第1张图片

python2实现获取公网IP、发QQ邮件

获取最新公网IP

import urllib2
url = urllib2.urlopen("http://icanhazip.com")
text = url.read()[:-1]	#返回的最后一个字符是\n

发邮件

  1. 在设置→账户打开SMTP并获取授权码
    打开SMTP服务
    获取授权码

  2. 发送邮件

import smtplib
from email.mime.text import MIMEText

#change begin
mail_pass = 'xxx'				#QQ邮箱的授权码
sender    = '[email protected]'		#发件人
receivers = '[email protected]'		#收件人
subject = ''					#邮件主题
mail_info = ''					#邮件正文
#change end

mail_host="smtp.qq.com"
message = MIMEText(mail_info)
message['From'] = sender
message['To'] =  receivers
message['Subject'] = subject
try:
	s = smtplib.SMTP_SSL(mail_host, 465)
	s.login(sender, mail_pass)
	s.sendmail(sender, receivers, message.as_string())
except Exception as e:
	print(str(e))

定时通知

  • 通过Linux的cron进程实现这个需求,具体命令:crontab
crontab -e
#    m     h	dom	m  dow cmd
#    分    时	日	月  周  具体执行的命令,尽量是绝对路径
0,15,30,45 *  	*  	* 	*  python /xxx/getipv6.py

小结:

通过url获取当前公网IP、通过smtp发送邮件、通过crontab定时运行脚本。

提升:

大家可以看到,目前是每一刻钟发送一次邮件,理论上邮件量非常大,那么在尽量做到实时获取ip地址的情况下如何避免这个问题呢?
博主在这里提出了一个解决方案:保存上次获取的IP,如果最新的IP与上次的不一致,再发邮件。
大家可以按自己的思维来。

你可能感兴趣的:(python,网络,python,NAS,ipv6公网)