在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命令的参数。