使用庫 os、subprocess
1.使用subprocess庫
非實時讀取
import subprocess # xe = subprocess.run("iperf3 -c 127.0.0.1 -p 5668 -J",stdout=subprocess.PIPE) xe = subprocess.run("ping baidu.com",stdout=subprocess.PIPE) print(xe.stdout.decode("gbk"))#打印控制台輸出 print(xe.returncode)#為0為運行ok,為1則運行異常
0x01 執行成功
輸出打印
正在 Ping baidu.com [220.181.38.148] 具有 32 字節的數據: 來自 220.181.38.148 的回復: 字節=32 時間=36ms TTL=49 來自 220.181.38.148 的回復: 字節=32 時間=36ms TTL=49 來自 220.181.38.148 的回復: 字節=32 時間=37ms TTL=49 來自 220.181.38.148 的回復: 字節=32 時間=37ms TTL=49 220.181.38.148 的 Ping 統計信息: 數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失), 往返行程的估計時間(以毫秒為單位): 最短 = 36ms,最長 = 37ms,平均 = 36ms 0
0x02 執行失敗
輸出打印
Ping 請求找不到主機 xezzc.com。請檢查該名稱,然后重試。 1
實時讀取
import subprocess def cmd_deal(cmd:str): xe = subprocess.Popen(cmd,stdout=subprocess.PIPE) while True: rt_data = xe.stdout.readline().decode("GBK") if rt_data!="": print(rt_data,end="") else: break return xe.wait()#執行成功返回0,執行失敗返回1 if __name__=="__main__": print(cmd_deal("ping baidu.com"))
0x01執行成功
輸出打印
正在 Ping baidu.com [220.181.38.251] 具有 32 字節的數據: 來自 220.181.38.251 的回復: 字節=32 時間=39ms TTL=49 來自 220.181.38.251 的回復: 字節=32 時間=39ms TTL=49 來自 220.181.38.251 的回復: 字節=32 時間=39ms TTL=49 來自 220.181.38.251 的回復: 字節=32 時間=39ms TTL=49 220.181.38.251 的 Ping 統計信息: 數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失), 往返行程的估計時間(以毫秒為單位): 最短 = 39ms,最長 = 39ms,平均 = 39ms 0
0x02執行失敗
輸出打印
Ping 請求找不到主機 bxsdsd.com。請檢查該名稱,然后重試。 1
2.使用os庫
非實時讀取
import os xe=os.popen("ping baidu.com",'r') print(xe.read())
0x01執行成功
輸出打印
正在 Ping baidu.com [220.181.38.251] 具有 32 字節的數據: 來自 220.181.38.251 的回復: 字節=32 時間=39ms TTL=49 來自 220.181.38.251 的回復: 字節=32 時間=39ms TTL=49 來自 220.181.38.251 的回復: 字節=32 時間=40ms TTL=49 來自 220.181.38.251 的回復: 字節=32 時間=40ms TTL=49 220.181.38.251 的 Ping 統計信息: 數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失), 往返行程的估計時間(以毫秒為單位): 最短 = 39ms,最長 = 40ms,平均 = 39ms
0x02執行失敗
輸出打印
Ping 請求找不到主機 bxsezc.com。請檢查該名稱,然后重試。