我找到了以下脚本https://stackoverflow.com/a/34737809/11392987并尝试运行它。由于我在Windows上运行Python 3.6,因此我对代码做了一些修改。这是我现在正在使用的代码。
import subprocess
import os
with open('ip.txt', 'r') as f:
for ip in f:
result=subprocess.Popen(["ping", "-n", "1", ip],stdout=f, stderr=f).wait()
if result:
print(ip, "inactive")
else:
print(ip, "active")
但是,结果似乎不正确。两个主机实际上都在运行。
C:\Python>python ping.py
192.168.0.1
inactive
192.168.0.2 active
C:\Python>
是否可以在一行中显示第一个输出...例如
192.168.0.1 inactive
192.168.0.2 active
更新
如果有更好,更简单的方法在Python中编写ping清除程序,从而将IP列表保存在ip.txt
文件中,请告诉我。
所需的输出
192.168.0.1 inactive
192.168.0.2 active
192.168.0.3 active
192.168.0.4 inactive
192.168.0.5 inactive
ip.txt
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
答案 0 :(得分:0)
我尝试了您的示例,并遇到了同样的问题,但是我意识到,最后一个IP始终是活动的IP,这就是我认为问题出在尝试读取文件时读取的文件是“ \ n”执行ping操作。
我稍稍更改了代码并使其正常工作:
import subprocess
import os
with open('ip.txt', 'r') as f:
for ip in f:
result=subprocess.Popen(["ping", "-n", "1", ip.strip()],stdout=f, stderr=f).wait()
if result:
print(ip.strip(), "inactive")
else:
print(ip.strip(), "active")
只需在从文件接缝中读取的IP上添加“ strip()”即可完成操作。
如果您有任何问题,请告诉我。
致谢