在python3中使用IP列表进行fping

2024-06-16 10:02:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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)')

但是,我无法用主机文件列表替换这两个主机,尽管我尝试了多种方法。你知道吗

我将非常感谢任何帮助这方面或任何改善方案本身。你知道吗

蒂亚。你知道吗


Tags: importiptimeoutoutpingutfsubprocesserr
1条回答
网友
1楼 · 发布于 2024-06-16 10:02:22

我找到了一个简单的解决方法:


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)

相关问题 更多 >