您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在不打印到控制台的情况下获取系统ping的输出

在不打印到控制台的情况下获取系统ping的输出

获取命令的输出,请使用subprocess.check_output。如果命令失败,它将引发错误,因此将其放在一个try块中。

import subprocess

try:
    response = subprocess.check_output(
        ['ping', '-c', '3', '10.10.0.100'],
        stderr=subprocess.STDOUT,  # get all output
        universal_newlines=True  # return string not bytes
    )
except subprocess.CalledProcessError:
    response = None

若要用于ping了解地址是否正在响应,请使用其返回值,该值为0表示成功。subprocess.check_call如果返回值不为0,则将引发并出错。要抑制输出,请重定向stdoutstderr。使用Python 3,您可以使用subprocess.DEVNULL而不是在一个块中打开空文件

import os
import subprocess

with open(os.devnull, 'w') as DEVNULL:
    try:
        subprocess.check_call(
            ['ping', '-c', '3', '10.10.0.100'],
            stdout=DEVNULL,  # suppress output
            stderr=DEVNULL
        )
        is_up = True
    except subprocess.CalledProcessError:
        is_up = False

通常,使用subprocess调用(如文档所述)旨在替换os.system

其他 2022/1/1 18:46:19 有353人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶