本文来自 CDWEN 的投稿。由于树莓派的使用场景中大多数没有配备显示器,那么如何得知树莓派的 IP 地址以便通过 SSH 客户端访问呢?
之前有介绍过一种将树莓派 IP 地址发送到邮箱的实现方式,是通过 mutt 和 msmtp 来实现的。下面将介绍另一种方式,通过 Python 和邮件服务商的 SMTP 服务器来发送带有 IP 信息的邮件。
需要编写两个脚本,Python 邮件发送脚本 mail.py 和获取树莓派 IP 信息的脚本 ip.sh。
mail.py 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/usr/bin/python #-*- coding:utf-8 -*- import smtplib from email.mime.text import MIMEText import sys mail_host = 'smtp.exmail.qq.com' #smtp地址如果不知可以百度如“163邮箱smtp地址” mail_user = '邮箱账号' #此账号密码是用来给人发送邮件的 mail_pass = '邮箱密码' #此账号密码是用来给人发送邮件的 mail_postfix = 'exmail.qq.com' #邮箱地址,smtp地址删去smtp字符如“163.com” def send_mail(to_list,subject,content): me = mail_user + "<" + mail_user + "@" + mail_postfix + ">" msg = MIMEText(content) msg[ 'Subject' ] = subject msg[ 'From' ] = me msg[ 'to' ] = to_list try : s = smtplib.SMTP_SSL() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str (e) return False if __name__ = = "__main__" : send_mail(sys.argv[ 1 ], sys.argv[ 2 ], sys.argv[ 3 ]) |
ip.sh 内容如下:
1 2 3 4 5 6 7 8 | #!/bin/bash sleep 10 wlan0=` ifconfig wlan0 | head -n2 | grep inet | awk '{print$2}' ` eth0=` ifconfig eth0 | head -n2 | grep inet | awk '{print$2}' ` if ping -c 2 -W 3 www.baidu.com &> /dev/null ; then /home/pi/mail .py 收件人邮箱地址(不可与mail.py脚本中账号一致) "树莓派已经开机,成功获取到ip地址" "无线网络地址:$wlan0||有线网络地址:$eth0" fi |
假设脚本在 /home/pi/ 目录下,给脚本赋予执行权限。
1 2 | sudo chmod +x /home/pi/ip .sh sudo chmod +x /home/pi/mail .py |
将脚本加入开机执行。
1 | sudo vim /etc/rc . local |
在 exit 0 之前加入下面一行
1 | sudo /home/pi/ip .sh |
重启树莓派,开机后等待一点时间,打开你的邮箱会收到一份树莓派的 IP 地址信息的邮件,知道 IP 之后可以更方便 SSH 连接到树莓派操作或进行 VNC 操作。
登上路由器看一下不就好了。
在公司登陆家里路由器毕竟不太便利。
还不如接个音箱,开机就让它直接说出来
我目前就是这么玩的
python3应该怎么改写,自己手动改了一部分却还是一直进异常
已经搞好了
现在都是服务商局域网了...惨
路由器搞个固定ip啊
感觉用不上啊,笔记本开热点就能查到IP,公用网络就不知道了,但既然是远程控制,还是用笔记本为多吧?
每隔几分钟检测IP是否变化,变化了直接调用阿里云DNS的API上去修改就完了..
哈哈,我就是这么搞的,一分钟判断一次IP变化,变化了就调API绑定域名,然后把IP发到邮箱
我也用到了这个功能,不过内网没什么用,可以做成DDNS服务,弄个动态域名绑上树莓派的服务器,每次IP变更的时候就发个邮件到自己邮箱,万一域名绑定失败还能用ip访问到
树莓派上接一个小LED屏,显示温度,IP地址等等,也就十几块钱,这种好用(✪▽✪)
led 屏幕要额外供电吗?
其实只需要大概记一下树莓派的MAC,然后在PC端运行arp -a就可以知道ip了
我是用的是将脚本介入Server酱,然后微信推送至手机上
获取到ip信息之后,可以用server酱/wxpusher 推送到手机微信上
您好,按您的步骤,为啥我接受的文字是乱码?(数字可以看见)