C(:12)를 이용해서 SNMP 시스템 관리 애플리케이션을 만드는 것은 지나치게 번거로운 측면이 있다. 그래서 perl(:12)을 이용하면 어떨까 해서 perl(:12)로 작성해 보기로 했다. 궁극적으로는 zenoss(:12)와 같은 시스템을 만드는게 목적이지만 이건 좀 먼일이기도 하고. 뭐 그래도 천리길도 한걸음부터라고 하니..
설치는 간단했다. 예전 같으면 CPAN에서 모듈을 다운로드 받은다음 컴파일 해서 설치했겠지만 너무 귀찮아서 그냥 ubuntu(:12) 패키지를 깔기로 했다. 설치 패키지는 libnet-snmp-perl-5.2.0이다. 가장 널리 사용되는 snmp(:12) perl 모듈인 것 같아서 선택했다.
그 전에 snmp(:12) manager와 agent를 설치했는데, 이에 대한 내용은 예전에 작성해 두었던 net-snmp 설치문서를 참고했다. 설치는 무지 쉬웠다.
설치하고 나서 perl(:12) 예제 프로그램을 실행시켜 봤다. 잘되네 ? 음 근데, 역시 perl 문법은 왠지 눈에 쏙 안들어오는 느낌이다.
#!/usr/bin/perl
use strict;
use Net::SNMP;
my ($session, $error) = Net::SNMP->session(
-hostname => shift || 'localhost',
-community => shift || 'public',
-port => shift || 161
);
if (!defined($session))
{
printf("Error : %s\n", $error);
exit 1;
}
my $sysUpTime = '1.3.6.1.2.1.1.3.0';
my $result = $session->get_request(-varbindlist => [$sysUpTime]);
if(!defined($result))
{
printf("ERROR: %s\n", $session->error);
$session->close;
exit 1;
}
printf("sysUpTime for host %s is %s\n",
$session->hostname, $result->{$sysUpTime});
$session->close;
exit 0;
Recent Posts
Archive Posts
Tags