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

Ric*_*son 1 linux ip bash namespaces linux-namespaces

我想在一个步骤中在网络命名空间中运行一系列连接的bash命令,但似乎ip netns exec mynetns只需要一个bash命令作为参数.例如:

ip netns exec mynetns ip a
Run Code Online (Sandbox Code Playgroud)

......按预期工作.

ip netns exec mynetns "ip a ; ip a"
Run Code Online (Sandbox Code Playgroud)

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

显然,

ip netns exec mynetns ip a ; ip a
Run Code Online (Sandbox Code Playgroud)

...将返回网络命名空间和主机上的接口.

有没有办法让它发挥作用?

手册只谈论一个命令,这是不是一个非常好的迹象...

And*_*ess 5

netns exec正在运行一个命令,而不是一个bash命令:它正在执行一个带有参数的进程.

没关系,这只是意味着你需要明确地使用bash命令.这应该工作:

ip netns exec mynetns bash -c "ip a ; ip a"
Run Code Online (Sandbox Code Playgroud)