我使用Cloudflare API脚本通过crontab在我的Raspberry PI上更新DDNS。 Shell脚本在Debian中工作正常,但在CentOS / Fedora中失败。在终端中运行时,它可以工作。
我签出了ip addr无法获取数据,但是我无法解决它。我尝试使用主机名-I代替ip addr,然后运行良好。
但是我想知道为什么ip无法在.sh / bash shell脚本中工作?
Ferora 28服务器Raspberry。 我尝试了很多可以用谷歌搜索的解决方案,但都无济于事。
#!/bin/bash
#this works
ip=$(hostname -I | awk '{print $NF;exit}')
echo $ip>>/usr/local/bin/cloudflare.log
#this fail
ips=$(ip route get 1:: | awk '{print $(NF-4);exit}')
echo $ips>>/usr/local/bin/cloudflare.log
# crontab -l
#automatic update ddns per 1 min
* */1 * * * /usr/local/bin/cf-ddns.sh >/dev/null 2>&1
cat cloudflare.log
xx.xx.xxx.xx
<Blank_None>
答案 0 :(得分:0)
crontab没有设置PATH,因此找不到二进制文件。在脚本顶部添加PATH,或者在crontab顶部添加导出。
# for example
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin