十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
小編給大家分享一下python怎么實(shí)現(xiàn)自動獲取IP并發(fā)送到郵箱,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

樹莓派沒有顯示器,而不想設(shè)置固定IP,因?yàn)橐S身攜帶外出,每個網(wǎng)絡(luò)環(huán)境可能網(wǎng)段不一樣。因此想用python寫個腳本,讓樹莓派開機(jī)后自動獲取本機(jī)ip,并且自動發(fā)送到我指定郵箱。
1.獲取所有連接的網(wǎng)絡(luò)接口,比如有線、wifi等接口
def get_ip_address():
#先獲取所有網(wǎng)絡(luò)接口
SIOCGIFCONF = 0x8912
SIOCGIFADDR = 0x8915
BYTES = 4096
sck = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
names = array.array('B',b'\0' * BYTES)
bytelen = struct.unpack('iL', fcntl.ioctl(sck.fileno(), SIOCGIFCONF, struct.pack('iL', BYTES, names.buffer_info()[0])))[0]
namestr = names.tostring()
ifaces = [namestr[i:i+32].split('\0', 1)[0] for i in range(0, bytelen, 32)]
#再獲取每個接口的IP地址
iplist = []
for ifname in ifaces:
ip = socket.inet_ntoa(fcntl.ioctl(sck.fileno(),SIOCGIFADDR,struct.pack('256s',ifname[:15]))[20:24])
iplist.append(ifname+':'+ip)
return iplist2.把IP地址發(fā)送到指定郵箱
def ip_send_mail(iptxt):
#設(shè)置收件郵箱
toaddrs = 'to@mail.com'
#設(shè)置發(fā)送郵箱
fromaddr = 'send@mail.com'
#設(shè)置發(fā)送郵箱的賬號密碼
username = 'your_sendmail@mail.com'
password = 'your_pass'
#設(shè)置SMTP服務(wù)器、端口,根據(jù)你的郵箱設(shè)置,
server = smtplib.SMTP('smtp.mail.com:25')
#設(shè)置郵件正文,get_ip_address()返回的是list,要轉(zhuǎn)換成str
ip = '\r\n'.join(iptxt)
#設(shè)置郵件標(biāo)題和正文
msg = MIMEText(ip,'plain', 'utf-8')
msg['Subject'] = 'IP For RaspberryPi'
msg['From'] = fromaddr
msg['To'] = toaddrs
#啟動SMTP發(fā)送郵件
server.ehlo()
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg.as_string())
server.quit()3.最后調(diào)用以上函數(shù)運(yùn)行即可
if __name__ == '__main__': #獲取IP iptxt = get_ip_address() #將IP存入文件,如果直接發(fā)送郵件,這步可以省略。 ip_save_file(iptxt) #將IP地址發(fā)送到指定郵箱 ip_send_mail(iptxt)
4.設(shè)置開機(jī)運(yùn)行
把以上代碼都放入一個文件,把文件放到樹莓派卡里面,如: /home/pi/get_ip_address.py
給python腳本可執(zhí)行權(quán)限
sudo chmod +x get_ip_address.py
設(shè)置系統(tǒng)啟動時運(yùn)行
sudo vi /etc/profile
編輯profile文件,在profile最后面,fi之前添加如下:
python /home/pi/get_ip_address.py
以上是“python怎么實(shí)現(xiàn)自動獲取IP并發(fā)送到郵箱”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!