从python输入内核名称空间
nsenter的Python项目详细描述
这个python包允许通过执行“setns”系统调用输入linux内核名称空间(mount、ipc、net、pid、user和uts)。 命令行接口试图类似于nsenterc程序。
需要Python2.6或更高版本
请参阅介绍性的blog post “Entering Kernel Namespaces from Python”。
从pypi安装:
sudo pip3 install nsenter
从git源安装:
python3 setup.py install
命令行用法示例:
docker run -d --name=redis -t redis sudo nsenter --all --target=`docker inspect --format '{{ .State.Pid }}' redis` /bin/bash
来自python的示例用法:
importsubprocessfromnsenterimportNamespacewithNamespace(mypid,'net'):# output network interfaces as seen from within the mypid's net NS:subprocess.check_output(['ip','a'])# or enter an arbitrary namespace:withNamespace('/var/run/netns/foo','net'):# output network interfaces as seen from within the net NS "foo":subprocess.check_output(['ip','a'])