{"title": "[\u6811\u8393\u6d3e]\u81ea\u52a8\u53d1\u9001\u672c\u673aip\u5230\u6307\u5b9a\u90ae\u7bb1", "update_time": "2014-05-30 09:39:31", "tags": "Raspberry", "pid": "299", "icon": "default.png"}
## 如何才能知道树莓派的ip地址 我使用树莓派的时候,只是想ssh上去执行一些操作,而树莓派的ip地址又是dhcp的。接显示器键盘看树莓派地址实在麻烦。 ## 让树莓派主动告诉我 于是想了一个办法,当树莓派开机启动的时候,自动执行一段python脚本,然后发到指定邮箱。 这样我们就不需要显示器就可以知道树莓派的ip地址了。 ## 抛砖引玉,让脚本跑起来 我发邮件使用了python脚本,如下可以供看官参考。 ``` #/bin/env python # -*-coding:utf8-*- import socket import fcntl import time import struct import smtplib import urllib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage #发送邮件的基本函数,参数依次如下 # smtp服务器地址、邮箱用户名,邮箱秘密,发件人地址,手贱儿女地址(列表的方式),邮件主题,邮件html内容 def sendEmail(smtpserver,username,password,sender,receiver,subject,msghtml): msgRoot = MIMEMultipart('related') msgRoot["To"] = ','.join(receiver) msgRoot["From"] = sender msgRoot['Subject'] = subject msgText = MIMEText(msghtml,'html','utf-8') msgRoot.attach(msgText) #sendEmail smtp = smtplib.SMTP() smtp.connect(smtpserver) smtp.login(username, password) smtp.sendmail(sender, receiver, msgRoot.as_string()) smtp.quit() # 检查网络连同性 def check_network(): while True: try: result=urllib.urlopen('http://baidu.com').read() print result print "Network is Ready!" break except Exception , e: print e print "Network is not ready,Sleep 5s...." time.sleep(5) return True # 获得本级制定接口的ip地址 def get_ip_address(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("1.1.1.1",80)) ipaddr=s.getsockname()[0] s.close() return ipaddr if __name__ == '__main__': check_network() ipaddr=get_ip_address() sendEmail('smtp.163.com','网易邮箱账号','网易邮箱密码','邮箱邮箱地址',['收件人地址'],'IP Address Of Raspberry Pi',ipaddr) ``` 好了,脚本保存为send_ip.py,然后在/etc/rc.local里加上下面这行 ``` /usr/bin/python /home/pi/send_ip.py ```