使用 python3 中的 IP 列表进行 fping
fping using IP list in python3
我是 python 的新手,我正在尝试使用 fping 扫描多个 IP。我有大量服务器需要监控统计数据,我可以编写以下适用于 2 台主机的代码:
import subprocess
import binascii
out = ''
err = ''
host1 = '172.2.2.5'
host2 = '172.1.5.8'
hosts = '/tmp/ip.list'
ping = subprocess.Popen(['fping', '-C', '10', '-b', '50', '-p', '25', host1, host2], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
try:
[out, err] = ping.communicate(timeout=15)
print('STDOUT')
print(out.decode('utf-8').strip())
print('STDERR (Statistics)')
print(err.decode('utf-8').strip())
except subprocess.TimeoutExpired:
print('STDERR (expired timeout)')
但是,我尝试了多种方法,但无法用主机文件列表替换这两个主机。
对于这方面的任何帮助或程序本身的任何改进,我将不胜感激。
TIA。
我找到了一个简单的修复方法:
with open('ip_list.csv', 'r') as fh:
all_ips = fh.read().splitlines()
cmd = ['fping', '-C', '10', '-b', '50', '-p', '25']
cmd.extend(all_ips)
ping = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
我是 python 的新手,我正在尝试使用 fping 扫描多个 IP。我有大量服务器需要监控统计数据,我可以编写以下适用于 2 台主机的代码:
import subprocess import binascii out = '' err = '' host1 = '172.2.2.5' host2 = '172.1.5.8' hosts = '/tmp/ip.list' ping = subprocess.Popen(['fping', '-C', '10', '-b', '50', '-p', '25', host1, host2], stdout=subprocess.PIPE, stderr=subprocess.PIPE) try: [out, err] = ping.communicate(timeout=15) print('STDOUT') print(out.decode('utf-8').strip()) print('STDERR (Statistics)') print(err.decode('utf-8').strip()) except subprocess.TimeoutExpired: print('STDERR (expired timeout)')
但是,我尝试了多种方法,但无法用主机文件列表替换这两个主机。
对于这方面的任何帮助或程序本身的任何改进,我将不胜感激。
TIA。
我找到了一个简单的修复方法:
with open('ip_list.csv', 'r') as fh: all_ips = fh.read().splitlines() cmd = ['fping', '-C', '10', '-b', '50', '-p', '25'] cmd.extend(all_ips) ping = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)