×

python ping cmd subprocess popen

使用Python获取ping命令的返回数据

鹭岛小千 鹭岛小千 发表于2022-08-23 22:13:52 浏览1166 评论1

1人参与发表评论

【问题描述】使用Python如何获取ping命令的返回数据呢?

70-1.png

【小千解答】使用subprocess模块的Popen类调用ping.exe命令传参。

代码如下:

import subprocess as sp

def ping_result(ipaddr):
    p = sp.Popen(['ping.exe',ipaddr],
                 stdin=sp.PIPE,stdout=sp.PIPE,stderr=sp.PIPE,
                 shell=True)
    return p.stdout.read().decode('gbk')
    
xqdata = ping_result('192.168.1.17')
print(xqdata)
print('-' * 20)
print('ping通了' if 'TTL' in xqdata else 'ping不通')

运行结果:

70-2.png


【知识拓展】

ping是一个独立的程序文件,可以直接调用运行,不需要间接使用cmd.exe ping ip的方式。

70-3.png


cmd命令行的编码格式是gbk,所以ping返回的数据要进行相应转码才能正常显示。

70-4.png


打赏码.png


【参考资料】

  1. 利用python获取Ping结果示例代码

  2. python在windows下实现ping操作并接收返回信息的方法


群贤毕至

访客
刘帆顺 刘帆顺2024-03-08 09:14:38 | 回复 亲爱的朋友:您好!中国各地出现了新冠变种毒株JN.1,传播速度比原来的XBB变种加快七到八倍,对免疫逃脱能力也进一步加强,最新的疫苗对它没有保护力,各地死亡人数在持续攀升,很多病患突然猝死。古今中外的预言也说了这几年人类有大灾难,如刘伯温在预言中说 "贫者一万留一千,富者一万留二三”,“贫富若不回心转,看看死期到眼前”, 预言中也告诉世人如何逃离劫难的方法,真心希望您能躲过末劫中的劫难,有个美好的未来,请您务必打开下方网址认真了解,内有躲避瘟疫保平安的方法。网址1:https://d1u7crz1a1vl7x.cloudfront.net/23gj 网址2:bitly.net/xbbbx 网址3:https://github.com/19920513/www/blob/master/README.md?saa#1