无法从Python 3的子过程中获取变量

问题描述 投票:0回答:1

我正在运行命令,在命令提示符下显示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'还是'OK',还是调用stream而不是State,它仍然会返回Firewall is off。我也尝试过if ('State' in stream == 'ON'):if ('State' in stream == 'OK'):,但仍然得到相同的结果。

我叫错了变量,我是不是完全错了?

我将需要执行此操作来检查网络连接,防病毒状态和加密状态,是否可以使用资源来调用适当的变量?

感谢您的帮助,在此先感谢您。

python python-3.x subprocess
1个回答
0
投票
仅测试输出是否包含单词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')

© www.soinside.com 2019 - 2024. All rights reserved.