このスクリプトが以前にここで説明されたことは知っていますが、まだ正しく実行できません。問題は、テキスト ファイルを 1 行ずつ読み取ることです。古いスクリプトでは
while host:
print host
が使用されていましたが、このメソッドを使用するとプログラムがクラッシュしたため、変更することにしました
for host in Open_host:
host = host.strip()
ただし、このスクリプトを使用すると、.txt ファイルの最後の行の結果しか得られません。誰かがそれを機能させるのを手伝ってくれますか? 以下のスクリプト:
# 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()
# loop: excuse trace route for each host
for host in Open_host:
host = host.strip()
# 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()