树莓派大家经常是在无显示器的情况下使用,有人用固定的IP,但是我觉得还是动态IP不错,可以切换不同的网络环境
那无显示器的情况下如何自动获知树莓派的ip呢。我决定采用python来解决
解决步骤
1. 写一个python程序,自动获取当前的ip地址,并发送到一个指定的邮箱
2. 将该python程序定义为网络建立后的一个可执行程序。
首先第一步,写python程序
------------------------sendip.py-------------------------------
#coding=utf-8
'''
Created on 2014-10-15
@author: jasonssd
'''
if __name__ == '__main__':
pass
import smtplib
import subprocess
from email.mime.text import MIMEText
mailto = ['[email protected]']
mail_host="smtp.163.com"
mail_user="your name"
mail_pass="your password"
mail_postfix="163.com"
def send_mail(to_list,sub,content):
me="hello"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_subtype='plain',_charset='gb2312')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
def getIpaddress():
body=''
address = subprocess.Popen('ifconfig',shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
lines = address.stdout.readlines()
for line in lines:
body+=line+'\n'
return body
if __name__ == '__main__':
if send_mail(mailto,"hello",getIpaddress()):
print("发送成功")
else:
print("发送失败")
-----------------------------------------------------------------------------
然后到 /etc/network/if-up.d 目录下建立一个脚本,该目录下的脚本会在网络建立以后自动被执行
我建立的叫 sendmail的文件
里面只需要一句即可
python /home/pi/pscript/sendip.py
保存之后
sudo chmod 777 sendmail 加上可执行权限
好了,完成了,把小PI重启一下看看,有没有一封邮件发到你的邮箱?
|