ip命令无法在crontab中的Shell脚本中获取IP地址

时间:2019-05-24 13:59:48

标签: bash shell cron

我使用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>

1 个答案:

答案 0 :(得分:0)

crontab没有设置PATH,因此找不到二进制文件。在脚本顶部添加PATH,或者在crontab顶部添加导出。

# for example
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin