[英]Simple Ping Sweep in Python 3.6 (Windows) doesn't work as expected
我發現以下腳本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
我嘗試了您的示例,並遇到了同樣的問題,但是我意識到,最后一個IP總是處於活動狀態,這就是我認為問題在於,在嘗試執行ping操作時,文件讀取出現了“ \\ n” 。
我稍微修改了一下代碼,並使它正常工作:
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()”即可完成操作。
如果您發現任何問題,請告訴我。
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.