在网络名称空间中运行多个命令



我想在一个步骤中以网络名称空间运行一系列串联bash命令,但是看来ip netns exec mynetns仅将一个bash命令作为参数。例如:

ip netns exec mynetns ip a

...按预期工作。

ip netns exec mynetns "ip a ; ip a"

...返回exec of "ip a" failed: No such file or directory

显然,

ip netns exec mynetns ip a ; ip a

...将返回网络名称空间和主机计算机中的接口。

有没有办法使它起作用?

手册仅谈论一个命令,这不是一个很好的迹象...

netns exec正在运行命令,而不是bash命令:它正在执行具有参数本身的过程。

没关系,这只是意味着您需要明确地将Bash命令。这应该有效:

ip netns exec mynetns bash -c "ip a ; ip a"

我正在使用代码中的以下方式。

1:以按照方式使用批处理所有壳命令。请注意空间/标签等,因为批处理非常敏感。PS:我使用的是使用Unshare的多个命名空间隔离,这是可选的。用它来给出各种命名空间隔离的其他想法。

root@7fb1cd095b91:#ip netns exec $ nsname unshare -fork - -pid -mount -proc/bin/bash -e<readlink/proc/self/bin/bashreadlink/proc/selfLS -LRT开始

2:第二次使用某些脚本中的相同命令,然后直接调用该脚本,然后批量bashing bash命令内联。

root@7fb1cd095b91:#ip netns exec $ nsname unshare -mpf -mount -proc -mount -proc -fork/bin/bash/bash/bash -c/tmp/start_ns.shs.sh.sh&

相关内容

  • 没有找到相关文章

最新更新