Собственно, вопрос названии темы. Есть некоторое оборудование с датчиками температуры и атмосферного давления, инфа отдаётся по SNMP. Требуется значения датчиков получать по крону и записывать в базу данных. Нашёл Perl-скрипт, который, судя по описанию, должен это делать. Создал базу, пользователя, предоставил привилегии, в изначальном скрипте подставил нужные значения, но он завершается с ошибкой can't execute request. Сам скрипт:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Net::SNMP;
# Параметры подключения с базе
my $database_login = 'pogoda';
my $database_passwd = 'Pogoda123';
my $database_name = 'pogoda';
# Подключаемся к базе
my $dbh = DBI -> connect("DBI:mysql:$database_name;host=localhost;", $database_login, $database_passwd) || die $DBI::errstr;
# Что будем оправшивать
my $snmp_host = '10.10.35.100'; # IP или hostname
my $snmp_community = 'public'; # SNMP Community
#Температура
my $snmp_oid_temperature = 'iso.3.6.1.4.1.17095.1.2.9.0'; # OID для опроса
#Атмосферное давление
my $snmp_oid_pressure = 'iso.3.6.1.4.1.17095.1.2.17.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_pressure]) or die "can't execute request\n";
# Печатаем результат
print "$result->{$snmp_oid_temperature}\n$result->{$snmp_oid_pressure}\n";
# Пишем значения в базу
$dbh -> do("INSERT INTO netping1 SET temperature=\"$result->{$snmp_oid_temperature}\", pressure=\"$result->{$snmp_oid_pressure}\"") || die $DBI::errstr;
Т.к. я не ни разу не программист, не могу понять почему скрипт не отрабатывает. Что не так со скриптом? Ошибку в синтаксисе perl -c не нашёл. Все дополнения Perl, на которые он ругался, доустановлены.
Или существуют ли другие способы решить исходную задачу?