溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python怎么實現(xiàn)自動獲取IP并發(fā)送到郵箱

發(fā)布時間:2021-04-09 11:25:08 來源:億速云 閱讀:394 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下python怎么實現(xiàn)自動獲取IP并發(fā)送到郵箱,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

樹莓派沒有顯示器,而不想設(shè)置固定IP,因為要隨身攜帶外出,每個網(wǎng)絡(luò)環(huán)境可能網(wǎng)段不一樣。因此想用python寫個腳本,讓樹莓派開機后自動獲取本機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 iplist

2.把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ù)運行即可

if __name__ == '__main__':

  #獲取IP
  iptxt = get_ip_address()
  #將IP存入文件,如果直接發(fā)送郵件,這步可以省略。
  ip_save_file(iptxt)  
  #將IP地址發(fā)送到指定郵箱
  ip_send_mail(iptxt)

4.設(shè)置開機運行

把以上代碼都放入一個文件,把文件放到樹莓派卡里面,如: /home/pi/get_ip_address.py

給python腳本可執(zhí)行權(quán)限

sudo chmod +x get_ip_address.py

設(shè)置系統(tǒng)啟動時運行

sudo vi /etc/profile

編輯profile文件,在profile最后面,fi之前添加如下:

python /home/pi/get_ip_address.py

以上是“python怎么實現(xiàn)自動獲取IP并發(fā)送到郵箱”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI