【发布时间】:2018-11-25 22:50:51
【问题描述】:
所以我有一个正在处理的项目,我需要做的一件事是在后台以管理员身份在 PowerShell 中运行“netstat -nb”命令,并将结果接收到 python 程序。 我一直在网上搜索解决方案,但从未找到有效的解决方案。我很乐意提供帮助。
"netstat -nb"
【问题讨论】:
标签: python python-3.x shell powershell subprocess
所以我有一个正在处理的项目,我需要做的一件事是在后台以管理员身份在 PowerShell 中运行“netstat -nb”命令,并将结果接收到 python 程序。 我一直在网上搜索解决方案,但从未找到有效的解决方案。我很乐意提供帮助。
"netstat -nb"
【问题讨论】:
标签: python python-3.x shell powershell subprocess
如果您想执行 netstat 命令,您可以直接从 Python 执行此操作。但您需要以管理员身份运行 Python 脚本:
import subprocess
subprocess.call("netstat -nb")
如果您需要访问 Python 脚本中的 powershell netstat 值,那么您可以在 powershell 中设置变量并将其传递给 Python 脚本。 以下是powershell命令:
$con=netstat -nb
& python.exe "FullPath of Python script file"-p $con
Python 脚本:
import sys
print(sys.argv[5])
for conn in sys.argv:
print(conn)
在这里,我们循环传递的参数(netstat 输出)并显示。因此,您将 powershell 命令结果传递给 Python 脚本并在那里显示。 将显示以下列:
【讨论】:
您可以使用子进程库。关于子流程模块,您可以查看this 文档以获取更多详细信息和功能。它可以帮助您解决问题。您可以使用 subprocess.Popen 或 subprocess.call 或从另一个脚本获取输出,您可以使用 subprocess.check_output。
你可以像这段代码一样使用它:
import subprocess
import sys
output = subprocess.Popen(['python','sample.py','Hello'],stdout=subprocess.PIPE).communicate()
print(output)
sample.py 脚本里面是:
import sys
my_message = "This is desired output. " + sys.argv[1]
print(my_message)
在您的情况下,您可以将 Popen 用作:
subprocess.Popen(['netstat','-nb'],stdout=subprocess.PIPE).communicate()
【讨论】: