如何使用os.system获取cmd的响应?

13 浏览
0 Comments

如何使用os.system获取cmd的响应?

这个问题已经有了答案

运行shell命令并捕获输出

我正在尝试通过ssh远程登录到服务器并获取命令输出,使用以下命令。

os.system('ssh user@host " ksh .profile; cd dir; find . -type f |wc -l"')

该命令的输出结果是14549 0。

为什么输出结果中有个零?

是否有办法将输出结果存储到变量或列表中? 我尝试将输出结果分配给变量和列表,但是变量中只有0。我使用的是python 2.7.3。

admin 更改状态以发布 2023年5月24日
0
0 Comments

你可以使用os.popen().read()

import os
out = os.popen('date').read()
print out
Tue Oct  3 10:48:10 PDT 2017

0
0 Comments

关于这个问题,SO网站有许多好的链接。可以先尝试在Python中运行shell命令并捕获输出 或者 将os.system的输出赋值给变量并防止其显示在屏幕上。简单来说:

import subprocess
direct_output = subprocess.check_output('ls', shell=True) #could be anything here.

要谨慎使用shell=True标志:

来自官方文档的警告:

警告

如果与不受信任的输入相结合,使用shell=True调用系统shell可能会带来安全风险。有关详细信息,请参见Frequently Used Arguments下的警告。

详细信息请参见:http://docs.python.org/2/library/subprocess.html

0