您好,登錄后才能下訂單哦!
小編給大家分享一下python怎么實現自動獲取IP并發送到郵箱,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
樹莓派沒有顯示器,而不想設置固定IP,因為要隨身攜帶外出,每個網絡環境可能網段不一樣。因此想用python寫個腳本,讓樹莓派開機后自動獲取本機ip,并且自動發送到我指定郵箱。
1.獲取所有連接的網絡接口,比如有線、wifi等接口
def get_ip_address(): #先獲取所有網絡接口 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 iplist
2.把IP地址發送到指定郵箱
def ip_send_mail(iptxt): #設置收件郵箱 toaddrs = 'to@mail.com' #設置發送郵箱 fromaddr = 'send@mail.com' #設置發送郵箱的賬號密碼 username = 'your_sendmail@mail.com' password = 'your_pass' #設置SMTP服務器、端口,根據你的郵箱設置, server = smtplib.SMTP('smtp.mail.com:25') #設置郵件正文,get_ip_address()返回的是list,要轉換成str ip = '\r\n'.join(iptxt) #設置郵件標題和正文 msg = MIMEText(ip,'plain', 'utf-8') msg['Subject'] = 'IP For RaspberryPi' msg['From'] = fromaddr msg['To'] = toaddrs #啟動SMTP發送郵件 server.ehlo() server.starttls() server.login(username,password) server.sendmail(fromaddr, toaddrs, msg.as_string()) server.quit()
3.最后調用以上函數運行即可
if __name__ == '__main__': #獲取IP iptxt = get_ip_address() #將IP存入文件,如果直接發送郵件,這步可以省略。 ip_save_file(iptxt) #將IP地址發送到指定郵箱 ip_send_mail(iptxt)
4.設置開機運行
把以上代碼都放入一個文件,把文件放到樹莓派卡里面,如: /home/pi/get_ip_address.py
給python腳本可執行權限
sudo chmod +x get_ip_address.py
設置系統啟動時運行
sudo vi /etc/profile
編輯profile文件,在profile最后面,fi之前添加如下:
python /home/pi/get_ip_address.py
以上是“python怎么實現自動獲取IP并發送到郵箱”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。