python - 无法从 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'):
,仍然得到相同的结果。
我是否调用了错误的变量,我是否完全做错了?
我将需要执行此操作来检查网络连接、防病毒状态和加密状态,是否有资源可用于获取要调用的正确变量?
任何帮助将不胜感激,在此先感谢。
解决方案
只需测试输出是否包含单词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')
推荐阅读
- mysql - 触发 INSERT SQL 多条数据
- google-apps-script - Google 表单响应仪表板
- c# - 对玩家的持续敌人伤害 - Unity 2019.1 Beta
- javascript - MS Teams 应用开发 - 使用 microsoft/teams-js 静默登录 Azure AD
- python - 如何在虚拟环境中升级 pip?
- java - 如何连接到 tcpclient?
- python - 在 R 或 Python 中组合和重塑 2 个数据帧的行和列
- ruby-on-rails - ajax 调用的 ActionController::RoutingError (No route matches [PUT] )
- ruby-on-rails - 我可以强制执行活动记录查询链吗?
- c# - 将 \u2265 插入 C# 字符串