×

python ping cmd subprocess popen

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

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

抢沙发发表评论

【问题描述】使用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操作并接收返回信息的方法


群贤毕至

访客