在Python中,你可以使用subprocess
模块来执行ping命令
import subprocess def ping(host, timeout=1, count=4): """ 执行ping命令,返回一个包含ping结果的列表。 :param host: 要ping的主机名或IP地址 :param timeout: 每次ping的等待时间(秒) :param count: 要发送的ping数据包数量 :return: 包含ping结果的列表,每个元素是一个字典,包含以下键值对: - 'success': 布尔值,表示ping是否成功 - 'time': 浮点数,表示ping所需的时间(秒) - 'error': 字符串,表示ping失败的原因(如果有的话) """ results = [] for i in range(count): try: # 在Windows系统中,使用'-n'参数,而在Linux和macOS系统中,使用'-c'参数 param = '-n' if platform.system().lower() == 'windows' else '-c' output = subprocess.check_output(['ping', param, str(count), host], stderr=subprocess.STDOUT, universal_newlines=True) # 解析ping的输出,提取所需的信息 success = 'TTL=' in output and 'from' in output time = float(output.split('time=')[-1].split(' ')[0]) if success else None results.append({ 'success': success, 'time': time, 'error': None }) except subprocess.CalledProcessError as e: # 如果ping失败,提取错误信息 error = e.output.strip() results.append({ 'success': False, 'time': None, 'error': error }) return results if __name__ == '__main__': host = 'example.com' ping_results = ping(host) for result in ping_results: print(result)
这个示例定义了一个名为ping
的函数,它接受一个主机名或IP地址作为参数,并执行ping命令。函数返回一个包含ping结果的列表,每个元素是一个字典,包含ping是否成功、所需时间和错误信息(如果有的话)。
请注意,这个示例仅适用于Windows、Linux和macOS系统。如果你需要支持其他操作系统,你可能需要根据系统调整ping命令的参数。