我正在编写一个脚本来为主机名列表执行跟踪路由。我要做的是逐行从文本文件中读取主机名,使用子进程为每个主机执行跟踪并将结果写入另一个文件。这是我的代码
# import subprocess
import subprocess
# Prepare host and results file
Open_host = open('c:/OSN/host.txt','r')
Write_results = open('c:/OSN/TracerouteResults.txt','a')
host = Open_host.readline()
# while loop: excuse trace route for each host
while host:
print host
# execute Traceroute process and pipe the result to a string
Traceroute = subprocess.Popen(["tracert", '-w', '100', host],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
hop = Traceroute.stdout.readline()
if not hop: break
print '-->',hop
Write_results.write( hop )
Traceroute.wait()
# Reading a new host
host = Open_host.readline()
# close files
Open_host.close()
Write_results.close()
我的问题是该脚本仅适用于具有 1 个主机名(或 1 行)的主机文件。当主机文件包含多行时,例如:hostname1.com hostname2.com hostname3.com 它会在第一两行给我这个通知
“无法解析目标系统名称 hostname1.com”
“无法解析目标系统名称 hostname2.com”
并且只给出最后一行的 tracert 结果。
我不确定我的脚本有什么问题,请帮助我修复它。非常感谢。
史蒂文