下面显示的脚本是我尝试使用Linux(Fedora)操作系统上运行的python 2.7 ping多个网络名称空间。
当前状态和问题
:
当我运行此文件时;来自elem1(命名空间)的ping存储在一个名为results的文件中。txt。
但是,我似乎无法让循环返回并ping elem2,elem3。。。元素
尝试的修复程序
:
我尝试使用“kill-9 p.pid”(如图所示)终止进程,希望这会终止进程,然后在循环的下一次迭代中创建一个新进程。但事实并非如此!
我查过文件了(
https://docs.python.org/2/library/subprocess.html
)并尝试了kill()、terminate()、removing shell=True等几种不同的排列方式。。。但无济于事。
import time
import os
import signal
import subprocess
IP_ADDR="192.168.1.1"
def main():
arry =["elem1", "elem2", "elem3", "elem4", "elem5", "elem6", "elem7"] array of network namespaces's to ping
with open('results.txt', 'a+') as outfile:
for elem in arry:
command = "ip netns exec {0} ping {1}".format(elem, IP_ADDR)
outfile.write("\n\nPinging {}\n".format(elem))
p = subprocess.Popen(command, shell=True, stdout=outfile)
command_kill = "kill -9 {}".format(p.pid)
time.sleep(2) #wait 5 seconds
p.kill()
outfile.close()
if __name__ == '__main__':
main()
我的问题
:
(1) 有人能解释一下代码在这里做什么吗?
(2) 你能提出一个实现我上述目标的方法吗?
非常感谢。