温馨提示×

Python ping命令返回值怎么处理

小樊
85
2024-12-07 13:23:39
栏目: 编程语言

在Python中,你可以使用subprocess模块来执行ping命令并处理返回值

import subprocess

def ping(host, timeout=1, count=4):
    try:
        # 使用ping命令(Windows系统使用'-n',Linux和macOS系统使用'-c')
        command = ['ping', '-c', str(count), host] if platform.system().lower() != 'windows' else ['ping', '-n', str(count), host]
        
        # 执行ping命令
        output = subprocess.check_output(command, stderr=subprocess.STDOUT, timeout=timeout)
        
        # 将输出转换为字符串并返回
        return output.decode('utf-8')
    except subprocess.TimeoutExpired:
        return f"请求超时,目标主机:{host}"
    except subprocess.CalledProcessError as e:
        return f"请求失败,目标主机:{host}\n错误信息:{e.output.decode('utf-8')}"
    except Exception as e:
        return f"发生未知错误,目标主机:{host}\n错误信息:{str(e)}"

# 使用示例
host = "www.example.com"
result = ping(host)
print(result)

这个示例中的ping函数接受一个主机名(或IP地址)作为参数,并设置了超时时间和ping次数。它使用subprocess.check_output()执行ping命令,并通过捕获异常来处理可能的错误。最后,它将输出转换为字符串并返回。

0