私は別の「壁」にぶつかりました...次のスクリプトがあります。これはWindowsで正常に機能しているように見えますが、Linuxに移動すると機能が失われるようです。
注:トラブルシューティングのために、印刷行のステートメントを追加しました。
次のスクリプトは、IのときにhostsFileの内容を出力し、Iのときにprint lines
各行を順番に出力しprint line
ます。ただし、pingの実行に達すると、ファイル内の最後のホストに直接ジャンプしているように見えます。私は明らかに明らかな何かを見逃したのではないかと思っていました(私はまだ初心者としてPythonを学んでいます)。
import sys, os, platform, subprocess
plat = platform.system()
scriptDir = sys.path[0]
hosts = os.path.join(scriptDir,'hosts.txt')
hostsFile = open(hosts, "r")
lines = hostsFile.readlines()
print lines
if plat == "Windows":
for line in lines:
line = line.strip( )
ping = subprocess.Popen(
["ping", "-n", "1", "-l", "1", "-w", "100", line],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = ping.communicate()
print out
print error
elif plat == "Linux":
for line in lines:
print line
line = line.strip()
ping = subprocess.Popen(
["ping", "-c", "1", "-s", "1", "-l", "1",line],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = ping.communicate()
print out
print error
hostsFile.close()
任意の考え/助けをいただければ幸いです。
よろしくお願いします。
よろしく、
MHibbin
編集:助けてくれたWoobleに感謝します...正しいコードは次のようになります(間隔に注意してください):
import sys, os, platform, subprocess
plat = platform.system()
scriptDir = sys.path[0]
hosts = os.path.join(scriptDir,'hosts.txt')
hostsFile = open(hosts, "r")
lines = hostsFile.readlines()
if plat == "Windows":
for line in lines:
line = line.strip( )
ping = subprocess.Popen(
["ping", "-n", "1", "-l", "1", "-w", "100", line],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = ping.communicate()
print out
print error
if plat == "Linux":
for line in lines:
line = line.strip()
ping = subprocess.Popen(
["ping", "-c", "1", line],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = ping.communicate()
print out
print error
hostsFile.close()