给出以下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)
答案 0 :(得分: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()
OR
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
包含命令输出。
答案 1 :(得分:1)
用你的眼睛。
os.system只返回一个回到您的进程的数字。您应该使用subprocess module将stdout读回您的流程
例如
result = subprocess.check_output(['snmpget', '-v', '3', '-u', 'initial',
'172.17.171.113', '1.3.6.1.2.1.1.5.0'])
答案 2 :(得分:1)
os.system不返回命令的输出。它返回执行命令的退出状态。成功执行时为零,无效命令为非零。
如果要读取输出,请使用命令模块
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====
或使用其他人提到的子流程模块!
希望它有所帮助!
答案 3 :(得分:1)
import os
output = os.popen("snmpget -v 3 -u initial 172.17.171.113 1.3.6.1.2.1.1.5.0").read()
答案 4 :(得分:0)
本地做这件事会不会更好?