안녕하세요? 제조업에서 전산부서로 근무하는 직원 입니다.
net-snmp를 이용한 네트워크 장치에서 oid를 이용하여 쿼링하는것을 성공하고…
이를 프로그램으로 만들려고 하는데 너무 힘드네요…ㅜㅜ
자바스크립트가 첨이라 그런지 너무 어렵습니다… 지금 3일째 막혀 있어…너무 답답해서 문의 드립니다.
우선 소스는 아래와 같습니다.
cmnty_string = “xxxxxxx”
var snmp = require (“net-snmp”);
var get_value_m = 0;
var options = {
port: 161,
retries: 2,
timeout: 5000,
transport: “udp4”,
trapPort: 162,
version: snmp.Version2c,
idBitsSize: 32
};
var session = snmp.createSession (“192.168.250.3”,cmnty_string,options);
var oids = [“1.3.6.1.4.1.6296.9.1.1.1.10.0”];
var get_value =
session.get (oids, function (error, varbinds) {
if (error) {
console.error (error);
} else {
for (var i = 0; i < varbinds.length; i++)
if (snmp.isVarbindError (varbinds[i]))
console.error (snmp.varbindError (varbinds[i]))
else
console.log (varbinds[i].value);
get_value_m = varbinds[i].value;
//return varbinds[i].value;
}
// If done, close the session
session.close ();
});
console.log (get_value_m); // 값을 확인하기 위해서 찍어보면 출력이 초기값으로 출력됨…
session.get <- 이 부분은 위에 모듈 불러온 net-snmp 모듈에 있는 메소드? 입니다.
var snmp = require (“net-snmp”); <<----
여튼 문제는 볼드한 부분인데요.
session.get에서 실행한 OID쿼리값이 varbind.value에 저장되어 있는데 이 지역변수가 전역변수
get_value_m에 들어가지가 않습니다. 초기값에 0으로 해놓았는데…계속 초기 값만 출력이 됩니다.
그래서 리턴으로 넘겨 볼려고 시도해 보았으나 역시 실패…
대체 왜 그런걸까요? 제가 대체 어느부분을 놓치고 있는건지 모르겠습니다… ㅜㅜ
참고로 해당 변수(varbind[i].value)를 직접 로그로 찍어보면 정상적으로 값이 나옵니다.
고수님들의 고견 부탁 드리겠습니다! 감사합니다.