2014-12-31 3 views
0

저는 파이썬을 통해 snmpset으로 값을 설정하려고합니다. NoneType는 문자열이나 정수 값을 파이썬으로 snmpset하는 방법은 무엇입니까?

을 발견하고 값이 변경되지 않으며, 예상되는 문자열 또는 유니 개체 : 오류 :

import netsnmp 
snmpcfgfile=netsnmp.Varbind(".1.3.6.1.4.1.171.12.1.2.18.1.1.5.3", 
          "switch.cfg","STRING") 
netsnmp.snmpset(snmpcfgfile, Version=2, DestHost="10.0.112.4", Community="public")` 

(2 초 후 난 오류 참조).

내가 뭘 잘못 했니? 어떻게해야 제대로 할 수 있을까요?

추적 (무슨 뜻인지 이해하는 데 도움이 바랍니다) :

snmpcfgfile=netsnmp.Varbind("agentBscSwFile", "0", "switch.cfg", "STRING") 

:

--Call-- 
> /usr/lib/python2.7/dist-packages/netsnmp/client.py(185)set() 
-> def set(self, varlist): 
(Pdb) 
> /usr/lib/python2.7/dist-packages/netsnmp/client.py(186)set() 
-> res = client_intf.set(self, varlist) 
(Pdb) 
--Call-- 
> /usr/lib/python2.7/dist-packages/netsnmp/client.py(94)__iter__() 
-> def __iter__(self): 
(Pdb) 
> /usr/lib/python2.7/dist-packages/netsnmp/client.py(95)__iter__() 
-> return iter(self.varbinds) 
(Pdb) 
--Return-- 
> /usr/lib/python2.7/dist-packages/netsnmp/client.py(95)__iter__()-><listite...c8096490> 
-> return iter(self.varbinds) 
(Pdb) 
Traceback (most recent call last): 
    File "./snmp-set.py", line 7, in <module> 
    netsnmp.snmpset(snmpcfgfile, Version=2, DestHost="10.0.112.4", Community="public") 
    File "/usr/lib/python2.7/dist-packages/netsnmp/client.py", line 228, in snmpset 
    res = sess.set(var_list) 
    File "/usr/lib/python2.7/dist-packages/netsnmp/client.py", line 187, in set 
    return res 
    File "/usr/lib/python2.7/dist-packages/netsnmp/client.py", line 187, in set 
    return res 
    File "/usr/lib/python2.7/bdb.py", line 49, in trace_dispatch 
    return self.dispatch_line(frame) 
    File "/usr/lib/python2.7/bdb.py", line 67, in dispatch_line 
    self.user_line(frame) 
    File "/usr/lib/python2.7/pdb.py", line 157, in user_line 
    if self.bp_commands(frame): 
    File "/usr/lib/python2.7/pdb.py", line 167, in bp_commands 
    if getattr(self, "currentbp", False) and \ 
TypeError: expected string or Unicode object, NoneType found  
+0

전체 코드를 표시하십시오. –

+0

@ m170897017 질문을 편집했습니다. 그것을 봐라. 질문에 전체 코드가 있습니다. – Dees7

+0

2 초 지연 요청이 시간 초과되었습니다. 'public'을 커뮤니티 문자열로 사용해야합니까? – pajaja

답변

0

당신은이 방법을 this blog post 조언을 따라하려고하고, 문자열과 인덱스에 OID를 분해 할 수 또한 "공용"커뮤니티에서 OID를 작성할 수 있는지 확인해야합니다. 일반적으로이 커뮤니티는 기본 출하시 설정에서 읽기 전용으로 기본 설정됩니다.

net-snmp python 바인딩에 대한 문서는 좋지 않습니다.

관련 문제