樹莓派實現自動獲取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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章