以下是调用Ping命令批量IP的方法:
1. 通过subprocess模块调用Ping命令
subprocess模块提供了调用系统命令的功能,可以通过它来调用Ping命令。具体步骤如下:
- 从标准库中导入subprocess模块;
- 使用subprocess.Popen方法调用系统命令,传入参数,如序列类型的命令参数;
- 通过.communicate()方法来读取命令输出结果。
下面是使用subprocess模块调用Ping命令的示例代码:
import subprocess
def ping_ip(ip):
cmd_ping = ['ping', '-c', '3', ip]
p_ping = subprocess.Popen(cmd_ping, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, stderr = p_ping.communicate()
if '3 received' in output.decode('utf-8'):
return True
else:
return False
if __name__ == '__main__':
for i in range(1, 5):
ip = '192.168.31.%s' % i
if ping_ip(ip):
print('%s is up' % ip)
else:
print('%s is down' % ip)
2. 使用Python的ping库批量调用Ping
Python中也有专门用于Ping的第三方库ping。使用它可以更加方便地进行Ping操作,它支持TCP、HTTP、DNS、ICMP等多种协议。具体步骤如下:
- 从第三方库中导入ping模块;
- 创建Ping类实例,并指定要Ping的目标IP地址;
- 调用Ping类实例中的方法,等待结果返回。
下面是使用ping库批量调用Ping的示例代码:
from ping3 import ping
if __name__ == '__main__':
for i in range(1, 5):
ip = '192.168.31.%s' % i
rtt = ping(ip, timeout=1)
if rtt is not None:
print('%s is up, rtt = %.2f ms' % (ip, rtt))
else:
print('%s is down' % ip)
以上两种方法都可以进行Ping操作。第一种方法subprocess使用内置库,调用系统命令完成操作。而第二种方法使用第三方库ping,更加简洁方便。选择哪种方法取决于你的需求和喜好。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python中调用Ping命令,批量IP的方法 - Python技术站