我安装了带有Stretch的RPi 3b。当Pi启动时,我会生成并发送一条消息,询问它所连接的外部IP /内部IP / SSID。
我有一个脚本,其中包含执行这些操作的命令,当以pi用户或什至在sudo su-:之后以root身份运行时,用于将消息构造为JSON的这一行工作正常。
echo -e "{\"time\":\""$(date)"\",\"hostname\":\""$(hostname)"\", \"distro\":\""$(cat /etc/issue)"\",\"extip\":\""$(/usr/bin/curl ipecho.net/plain)"\",\"ssid\":\""$(/sbin/iwgetid -r)"\",\"lanip\":\""$(/bin/hostname -I)"\"}" > /home/pi/hostinfo.txt
当我在本地运行此脚本时,它运行良好(显示了我期望的值在哪里):
{"time":"Sat Sep 29 17:12:31 EDT 2018","hostname":"<expected hostname>", "distro":"Raspbian GNU/Linux 9
\l","extip":"<expected external IP>","ssid":"<expected SSID>","lanip":"<expected LAN IP>"}
我正在尝试在启动时运行此命令,命令运行正常并发送消息,但是最后三个值是空白:
-e {“ time”:“ EDT 2018年9月29日星期六17:12:31”,“主机名”:“”, “ distro”:“ Raspbian GNU / Linux 9 \ l”,“ extip”:“”,“ ssid”:“”,“ lanip”:“”}
我已将脚本调用同时添加到rc.local和crontab中,
rc.local:
su pi -c '<path-to-script> > /home/pi/rpi-boot.log 2>&1'
crontab:
@reboot <path to script>
无论哪种方式,该脚本都会按预期的方式构建和传递消息,并且不会在rpi-boot.log中显示任何错误,但是当它由rc.local或crontab运行时,前三个值(日期,主机名,发行版)报告正确,但最后三个为空白。
我认为将完整的路径放在主机名,curl和IP上是可行的,当我从交互式外壳运行时它们确实起作用,但是在启动时运行它们却返回空白。