ホスト名のリストに対して traceroute を実行するスクリプトを作成しています。私がやろうとしているのは、テキストファイルからホスト名を1行ずつ読み取り、サブプロセスを使用して各ホストのtracertを実行し、結果を別のファイルに書き込むことです。ここに私のコードがあります
# 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 最初の 2 行についてこの通知が表示されます。
「ターゲット システム名 hostname1.com を解決できません」
「ターゲット システム名 hostname2.com を解決できません」
そして、最後の行の tracert 結果のみを提供します。
スクリプトの何が問題なのかわかりません。修正を手伝ってください。どうもありがとう。
スティーブン