在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命令的參數。