首页 > 解决方案 > 无法从 Python 3 中的子进程获取变量

问题描述

我正在运行命令,netsh advfirewall show allprofiles state在命令提示符下,我收到以下预期的输出。

Domain Profile Settings:
----------------------------------------------------------------------
State                                 ON

Private Profile Settings:
----------------------------------------------------------------------
State                                 ON

Public Profile Settings:
----------------------------------------------------------------------
State                                 ON
Ok.

我正在尝试将防火墙的状态拉入一个函数并检查它是否启动。

我正在运行以下代码来获取防火墙状态。我现在只是使用print()命令进行调试。

import subprocess
import os, sys

def system_check():
    stream = os.popen('netsh advfirewall show allprofiles state').read()
    if ('State' == 'ON'):
        print('Firewall is on')
    else:
        print('Firewall is off')

无论我尝试使用'ON'or'OK'还是调用stream而不是State,它仍然返回Firewall is off。我也试过if ('State' in stream == 'ON'):and if ('State' in stream == 'OK'):,仍然得到相同的结果。

我是否调用了错误的变量,我是否完全做错了?

我将需要执行此操作来检查网络连接、防病毒状态和加密状态,是否有资源可用于获取要调用的正确变量?

任何帮助将不胜感激,在此先感谢。

标签: pythonpython-3.xsubprocess

解决方案


只需测试输出是否包含单词OFF

def system_check():
    stream = os.popen('netsh advfirewall show allprofiles state').read()
    if 'OFF' in stream:
        print('Firewall is off')
    else:
        print('Firewall is on')

推荐阅读