使用库 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。请检查该名称,然后重试。