Python3使用ping命令检测设备是否在线

最近领导要求查看公司设备是否在线,将近一千台设备,一个一个ping太耗精力了,所以尝试了python自动ping命令。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import subprocess
 
ipList = ['192.168.0.100','192.168.0.101','192.168.0.102']
butong = []
 
num = 0
while num < 3:
	cmd = 'ping -c 2 ' + ipList[num]
	p = subprocess.Popen(cmd,
		stdin = subprocess.PIPE,
		stdout = subprocess.PIPE,
		stderr = subprocess.PIPE,
		shell = True)
	p.wait()
	out = p.stdout.read().decode()
 
	if 'ttl' not in out:
		butong.append(ipList[num])
	num += 1
	print(num)
	print(out)
 
print(butong)

首先,创建两个列表,将所有要ping的ip地址放在ipList列表里,另一个列表用来储存ping不同的ip。

将ping的命令作为字符串保存在cmd中,然后通过subprocess.Popen()测试是否ping通。

如果ping通,会返回如图所示内容:

如果不通,则返回:

我这里通过判断是否包含字符串’ttl’来判断有没有ping通。

最后结果为:

最后试了下,公司将近一千台设备ping了20来分钟,有30个不通的设备。虽然效率还不高,但是可以解放双手,偷偷懒了。

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注