【问题描述】使用Python如何获取ping命令的返回数据呢?
【小千解答】使用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不通')
运行结果:
【知识拓展】
ping是一个独立的程序文件,可以直接调用运行,不需要间接使用cmd.exe ping ip的方式。
cmd命令行的编码格式是gbk,所以ping返回的数据要进行相应转码才能正常显示。
【参考资料】