2011-12-08 29 views
2

我正在使用python向snmp代理髮送snmpset消息。我擁有正確的OID,因爲我可以使用它來使用snmpget獲取數據。但是,它不會設置數據。我以十六進制格式(兩個十六進制值)發送八位字節,並用冒號分隔。我可能不得不在周圍放置撇號,對吧?這裏是我發送pymp中的snmpset

富= os.popen(「snmpset -v 2C -c私人192.1.55.222 .1.2.6.5.4.1.24022.4.27.1.6.4.4 X 00的行的示例:00:04:cf:00:00:00:00:00:00「)

正如你所看到的,我正在發送一個類型爲x的Octet字符串。

任何人都可以冒險猜測我應該如何通過設置值「00:00:04:cf:00:00:00:00:00:00」。我知道setvalue是正確的長度和類型,因爲我已經在MIB瀏覽器中使用它。

+0

'foo = os.popen ...'是從程序中複製的實際代碼嗎?我無法想象這是如何工作的,而不是來自SNMP(我對此一無所知),但從Python的角度來看。你能澄清你正在得到什麼樣的錯誤(或其他問題)嗎? – Helgi

+0

嘿Helgi,這是實際的代碼,但我可以看到有錯誤:我正在傳遞一個字符串。讓我編輯。該語法正確,因爲此代碼用於成功設置其他屬性。這只是這個很長的十六進制字符串,不工作。 – user442920

回答

0

幾件事情:

1)有一個原生的Python接口,你可以改用調用系統命令。實際上有多種選擇,包括pysnmp(用python完成)和Net-SNMP's python module (done in C)

2)Net-SNMP snmpset命令期望直接十六進制代碼,其中沒有任何:s。所以如果你刪除:你可能會發現它會工作。

+0

謝謝Wes,我會試一試! – user442920