最近在搞樹莓派搭建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地址了......