Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

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;