From bdf329713c18abc63cfc886430af18f63abfc36f Mon Sep 17 00:00:00 2001 From: JrD <421273918@qq.com> Date: Fri, 18 Sep 2020 11:50:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B9=B3=E5=8F=B0=E9=80=82?= =?UTF-8?q?=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/utils.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/common/utils.py b/common/utils.py index 175585a..7a1957b 100644 --- a/common/utils.py +++ b/common/utils.py @@ -733,7 +733,7 @@ def sort_by_subdomain(data): def ping(host, path): param = '-n' if platform.system().lower() == 'windows' else '-c' - command = ['ping', param, '3', host] + command = ['ping', param, '5', host] with open(path, "w") as f: return subprocess.call(command, stdout=f, stderr=f) @@ -743,12 +743,16 @@ def ping_avg_time(nameserver): temp_path = settings.temp_save_dir.joinpath('ping') ping(nameserver, path=temp_path) with open(temp_path, 'r') as f: - text = f.readlines()[-1] - if '100.0% packet loss' in text: + text = f.read() + if '100.0% packet loss' in text or '100% 丢失' in text: logger.log('ALERT', f'100.0% packet loss, ping {nameserver} failed.') return None - elif 'round-trip' in text: - avg_time = re.findall(r'\d+\.\d+', text)[1] + elif platform.system() in ('Darwin', 'Linux'): + avg_time = re.findall(r'\d+\.\d+', f.readlines()[-1])[1] + logger.log('INFOR', f'ping {nameserver} average time {avg_time} ms.') + return avg_time + elif platform.system() == 'Windows': + avg_time = re.findall(r'(?:Average|平均).+(\d.)ms', text)[0] logger.log('INFOR', f'ping {nameserver} average time {avg_time} ms.') return avg_time else: