买了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地址,是最节省成本的一个方式。
|