三无环境(无显示器无固定IP地址无串口线)访问RPI的方法
买了RPI之后发现一个问题,家里、公司都没显示器,电视老人还要看,手里就一个笔记本。在公司使用的话,网络环境是DHCP,每次启动获得的IP都不一样,无显示器和键盘,SSH都不知道连哪儿。不过毕竟玩儿Linux也十多年了,很快思考了一下,梳理了一个思路:
1、每次机器启动的时候自动执行个脚本,把DHCP获取的IP发到我的邮箱;
2、SSH直接联这个IP即可。
原以为很简单,没想到还是折腾了一番功夫。
1、现在淘宝买了根USB转串口的线(连接方式见我另一个帖子),先把RPI连上。
2、写了个超级简单的脚本,得到IP,然后发现Raspbian里面没有sendmail服务,不能直接mail。
3、郁闷ing,考虑给它装个sendmail,又觉得有点大材小用。发现raspbian目录下有python,于是想还是搞个python的脚本。
4、上网一搜,发现竟然有现成的,http://elinux.org/RPi_Email_IP_On_Boot_Debian,于是按照里面写了个mail.py的脚本
5、这下省事了,按照里面的步骤做完,测试了下mail.py这个脚本ok,于是把它加入rc.local里面
6、麻烦来了,调试了半天,rc.local里面的脚本似乎总是不执行。
于是又跟踪进去看了看,发现脚本无错误,似乎raspbian在启动这个rc.local这个脚本的时候还未获得IP地址和环境变量,因此这条路不通。可是也有些网友说他们的脚本执行正常,不知道究竟为什么。
后来在国外的网站上看到有人说,rc.local不能保证每次都正常执行,比较稳妥的方法是在/etc/init.d里面执行。这点也请后来的网友指点了。
7、于是把上面的脚本挪到/etc/init.d/目录下,
sudo chmod 755 /etc/init.d/mail.py
sudo /etc/init.d/mail.py start
测试成功,邮箱收到邮件,然后
sudo update-rc.d mail.py defaults
把脚本加入启动清单。重启,成功。
这样每次RPI启动都会给我的邮箱发一个通知,告诉我当前获得的IP地址,然后就可以ssh连接上去。
如果要删除这个服务,
sudo update-rc.d -f mail.py remove
即可。
通过这种方式,无论我是在公司还是在家,只要把RPI连上路由器,就可以从其他机器访问到它,不需要串口线,不需要显示器,也不用设置固定的IP地址,是最节省成本的一个方式。
:victory:,不失是个好方法 其实一般的主机都是默认这种方式访问的!要不每台主机都得接个显示器岂不很麻烦。之后设置了固定IP后,就可以直接在局域网里通过其他管理用的机器来ssh登录。 赞楼主的好方法。
有DVI显示器和 HDMI(母)转DVI(公)转接头的板油可以飘过,呵呵。 内个……顺着LZ的思路,再瞎想一下,话说如果是纯内网没接Internet的话,LZ的这种发mail的方法也许就不太好用了。
是不是可以在usb上插个u盘,启动后运行一个脚本,把这个u盘mount上去,把IP写到这个u盘上的log里
然后再自动unmount下来(这时候可以通过播放声音来提示已经unmount成功)。
之后拔掉U盘,插别的电脑上,就能看见IP了,不需要外网支持…… 我用DDNS自动更新IP,然后用natpmp自动开端口映射,最后放一个while 循环里,用sleep设定一下自动检测时间就行了 #!/bin/sh
MSG=`wget -qO- "http://user:password@www.3322.org/dyndns/update?system=dyndns&hostname=xxxxxx.3322.org&wildcard=OFF&mx=&backmx=NO"`
T=`date '+%Y-%m-%d %H:%M:%S'`
out=$T" - "$MSG
echo $out
以上脚本 crontab 或者init.d 跟着楼上的学习了! 楼上的,都是高手阿,学习了,原来RPI还可以这么玩。 把文件加入开机启动项时,出现update-rc.d:using dependency based boot sequencing insserv: warning: script 'mail.py' missing LSB tags and overrides求解决啊 急用!
页:
[1]
2