1

给定以下 Python 命令:

 os.system('snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0')
 a=raw_input()    // in order to be able to see the result. I dont want the windows to close at the end.

如何读取此命令行命令的结果?

我试过 string=os.read(os.system,10)

但它不起作用......有什么想法吗?(我用的是windows xp)

4

5 回答 5

3
import subprocess
output, error = subprocess.Popen('snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0'.split(), stdout=subprocess.PIPE).communicate()

或者

import subprocess
output = subprocess.check_output('snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0'.split())

output包含命令输出。

于 2013-06-12T06:42:31.910 回答
2

好吧,通常我正在使用

import os


output = os.popen("snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0").read()
于 2013-06-12T09:03:34.230 回答
1

用你的眼睛。

os.system 仅将一个数字返回给您的进程。您应该使用subprocess 模块将标准输出读回您的流程

例如

subprocess.check_output

result = subprocess.check_output(['snmpget', '-v', '3', '-u', 'initial',
                                  '172.17.171.113', '1.3.6.1.2.1.1.5.0'])
于 2013-06-12T06:41:20.060 回答
1

os.system 不返回命令的输出。它返回执行的命令的退出状态。成功执行时为零,无效命令时为非零。

如果要读取输出,请使用 commands 模块

import commands

output = commands.getoutput("snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0")

====process output====

或者使用别人提到的子流程模块!

希望能帮助到你!

于 2013-06-12T06:45:22.273 回答
0

在本地做这个不是更好吗?

于 2013-06-12T07:53:40.133 回答