Skip to content

Instantly share code, notes, and snippets.

@genaev
Created May 30, 2012 06:38
Show Gist options
  • Save genaev/2834110 to your computer and use it in GitHub Desktop.
Save genaev/2834110 to your computer and use it in GitHub Desktop.
скрипт получает данные по SNMP и записывает их в MySQL
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Net::SNMP;
# Параметры подключения с базе
my $database_login = 'login';
my $database_passwd = 'password';
my $database_name = 'db_name';
# Подключаемся к базе
my $dbh = DBI -> connect("DBI:mysql:$database_name;host=localhost;", $database_login, $database_passwd) || die $DBI::errstr;
# Что будем оправшивать
my $snmp_host = '172.25.13.5'; # IP или hostname
my $snmp_community = 'SWITCH'; # SNMP Community
#Температура
my $snmp_oid_temperature = '.1.3.6.1.4.1.25728.8400.2.4.0'; # OID для опроса
#Относительная влажность
my $snmp_oid_humidity = '.1.3.6.1.4.1.25728.8400.2.2.0'; # OID для опроса
# Пытаемся читать значение
# В -varbindlist должна быть ссылка на массив OID'ов
# В $result будет ссылка на хэш вида: OID => Значение
my $snmp_session = Net::SNMP->session(
-hostname => $snmp_host,
-community => $snmp_community,
-version => 1, # Явно указываем версию протокола
) or die "can't connect";
my $result = $snmp_session->get_request(-varbindlist => [$snmp_oid_temperature,$snmp_oid_humidity]) or die "can't execute request\n";
# Печатаем результат
print "$result->{$snmp_oid_temperature}\n$result->{$snmp_oid_humidity}\n";
# Пишем значения в базу
$dbh -> do("INSERT INTO netping1 SET temperature=\"$result->{$snmp_oid_temperature}\", humidity=\"$result->{$snmp_oid_humidity}\"") || die $DBI::errstr;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment