当我在bash中使用snmpget命令时,它可以工作,我得到了我想要的输出,但是当我通过paramiko通过python运行它时,它失败了并且没有返回任何内容。
我怀疑它回来了太多信息。
for x in L2Switches:
ssh.stdin, ssh.stdout, ssh.stderr = ssh.exec_command("snmpget -v2c -c <SNMPPASS> " + x + " HOST-RESOURCES-MIB::ifName | grep Master")
for line in ssh.stdout:
print(line)
if "Master Switch on the internal network" in line:
print(x + ' is the master switch')
else:
pass
我尝试过使用snmpwalk然后返回所有内容并且似乎没有使用'grep'功能。
stderr输出
检查stderr输出我可以看到它正在解析exec_command作为bash行上的两个命令
我已经包含了一个片段,如果您了解SNMP,您会看到它显示了snmp命令的“帮助”,然后尝试单独运行exec命令的第二部分,但是它报告它缺少对象名称
Missing object name
for levels 'p1' to 'p2'
[FS] pri token: log to file/syslog for level 'pri' and above
[FS] p1-p2 token: log to file/syslog for levels 'p1' to 'p2'
-C APPOPTS Set various application specific behaviours:
f: do not fix errors and retry the request
bash: line 1: HOST-RESOURCES-MIB::ifName: command not found