Команда ip не смогла получить IP-адрес в сценарии оболочки в crontab - PullRequest
0 голосов
/ 24 мая 2019

Я использую API-интерфейс Cloudflare для обновления DDNS на моем Raspberry PI с помощью crontab.Скрипт оболочки прекрасно работает в Debian, но не работает в CentOS / Fedora.Пока работает в терминале, все работает.

Я проверил, что ip addr не может получить данные, но я не смог их решить.И я попробовал, что я могу вместо этого IP-адрес с именем хоста -I, то это работает хорошо.

Но мне интересно, почему ip не может работать в сценарии оболочки .sh / bash?

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 голосов
/ 24 мая 2019

crontab не устанавливает PATH и не может найти двоичные файлы.Добавьте PATH вверху вашего скрипта или с экспортом вверху crontab.

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