树莓派实现自动获取IP地址并发送到指定邮箱

最近在搞树莓派搭建webserver环境,没有屏幕的情况下获取ip地址很麻烦,所以想到了自动获取IP地址发送到电子邮箱。

1. 编写发送邮件的python脚本:sendip.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib 
from email.mime.text import MIMEText 
from email.header import Header 
import sys
import socket,fcntl,struct,time
import datetime

SMTPserver="smtp.163.com"
Sender="XXX" #发送到邮箱的地址
password="***" #邮箱密码 
time.sleep(5)
nowTime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #顺便打印下时间,方便识别
def get_ip(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', bytes(ifname[:15],'utf-8')))[20:24])

#ip=get_ip('wlan0')#获取 wlan0的网卡

ip=str(sys.argv)
tet = 'print on time : ' + nowTime + '\n' + '\n'+ ip
print("server ip:",tet)
msg=MIMEText(tet, 'plain', 'utf-8') 

msg["Subject"]=Header(u'树莓派IP', 'utf-8').encode()
msg["From"]=Sender 
msg["to"]="XXX" #发送到哪里 
mailserver=smtplib.SMTP(SMTPserver,25) 
 
try:
    #登录邮箱
    mailserver.login(Sender,password) 
    mailserver.sendmail(Sender,["邮箱地址"],msg.as_string())
    mailserver.quit() 
    print ("success!!")
except smtplib.SMTPException:
    print ("error:failed!!")

2. 编写一个shell脚本,用来获取地址信息:get_ip_script.sh

#!/bin/sh

while :
do
	ping -c 2 www.baidu.com  &>/dev/null
	[ $? -eq 0 ] && break
done	
 
a=`ifconfig wlan0 | grep broadcast`
python3 /home/pi/tools/sendip.py "wlan0:$a"
echo "ok"

3.添加开机执行:sudo nano /etc/rc.local,在 exit 0 之前添加:bash /home/pi/Autorun/get_ip_script.sh

然后sudo reboot, 就可以收到wlan 的ip地址了......

发布了17 篇原创文章 · 获赞 5 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章