我正在尝试结合Scott Lowe 的命名空间创建指南和关于在两个接口之间转发流量的答案。
我有这个脚本,它在每次重启时使用 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
不会执行。为什么会发生这种情况?我该如何让它执行?
总结: ifconfig vpnopen 10.0.0.1/24 up
在命名空间内由 cron 调用时不执行
=============
澄清:
- 我的 cron 任务是
@reboot /home/ubuntu/startupscripts/rootscripts.sh
- 上面给出的代码是 shell 脚本的第一部分,称为
- 我说的“不执行”是指,如果我
sudo ip netns exec vpnspace ifconfig
在终端中运行命令来检查 IP 地址是否已调出,终端将返回空白输出。我尝试通过附加来记录输出>>rootscripts.log
,但什么都没有记录,也没有返回任何错误消息。
答案1
cron 命令通常使用默认 PATH 执行。虽然 ip 通常位于 /bin 中,但 ifconfig 最常位于 /sbin 中……因此请尝试将 /sbin/ifconfig 放入命令行中。