ifconfig up не выполняется из cron
Я пытаюсь объединить руководство Скотта Лоу по созданию пространства имен с этим ответом о пересылке трафика между двумя интерфейсами.
У меня есть этот сценарий, который запускается при каждой перезагрузке с использованием директивы cron @reboot: (Я использую сценарий, потому что ни одна из этих команд не сохраняется после перезагрузки.)
# Setup VPN
ip netns add vpnspace
ip link add vpnopen type veth peer name vpnbind
ip link set vpnopen netns vpnspace
ip netns exec vpnspace ifconfig vpnopen 10.0.0.1/24 up
Когда я запускаю скрипт вручную, используя sudo
, он работает нормально. Тем не менее, когда скрипт запускается cron, четвертая строка, ip netns exec vpnspace ifconfig vpnopen 10.0.0.1/24 up
, не выполняет. Почему это происходит? Как мне заставить его выполнить?
TL; DR: ifconfig vpnopen 10.0.0.1/24 up
не выполняется при вызове cron внутри пространства имен
=============
Разъяснения:
- Моя работа cron
@reboot /home/ubuntu/startupscripts/rootscripts.sh
- Приведенный выше код является первой частью сценария оболочки, которая называется
- Под "не выполняется" я имею в виду, что если я запускаю команду
sudo ip netns exec vpnspace ifconfig
в терминале, чтобы проверить, был ли введен IP-адрес, терминал возвращает пустой вывод. Я попытался записать вывод, добавив>>rootscripts.log
, но ничего не регистрируется и сообщение об ошибке не возвращается.
1 ответ
Команды cron обычно выполняются с PATH по умолчанию. Хотя ip обычно находится в /bin, ifconfig чаще всего находится в /sbin .,, поэтому попробуйте поместить /sbin/ifconfig в вашу командную строку.