![ifconfig up не выполняется из cron](https://rvso.com/image/717752/ifconfig%20up%20%D0%BD%D0%B5%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%B8%D0%B7%20cron.png)
Я пытаюсь объединитьРуководство Скотта Лоу по созданию пространства именсэтот ответ о пересылке трафика между двумя интерфейсами.
У меня есть этот скрипт, который запускается при каждой перезагрузке с помощью директивы 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 в командной строке.