доброго дня всем. Есть самописный скрипт, писался для контроллера датчиков температуры и влажности, от малоизвестной компании actidata, взамен кривому софту, но речь не о компании. речь о перле. Дан скрипт:
#!/usr/bin/perl -w
#Суть скрипта в том, что контроллер при опросе выводит трехзначное число: к примеру 281 градуса(с показаний контроллера) должно выглядеть как 28.1, аналогично с влажностью
$SNMPWLK = "/usr/local/nagios/libexec/check_snmp ";
my $IP = shift;
my $OID_PREF = shift;
my $ARG1 = shift;
my $ARG2 = shift;
my $zn = shift;
$WARN_TEM=$ARG1*10;
$CRIT_TEM=$ARG2*10;
$source1 = `$SNMPWLK -H '$IP' -o '$OID_PREF' -w '$WARN_TEM' -c '$CRIT_TEM' | awk '{ print \$4}' | tr "**" " "` ;
$human_read1 = ($source1/10);
$i=0;
# если с датчика пришло по нулям - значит датчик видимо отвалился, посему сменим статус
if($source1==0){
$i++;
}
else {
$i=0;
}
#сама замена
if($i==1) {
$zamena1 = "UNKNOWN";
$test = `$SNMPWLK -H '$IP' -o '$OID_PREF' -w '$WARN_TEM' -c '$CRIT_TEM' | awk '{ print \$1,"$zamena1",\$3,'$human_read1', "$zn", \$5, \$6 } '`;
}
else {
$test = `$SNMPWLK -H '$IP' -o '$OID_PREF' -w '$WARN_TEM' -c '$CRIT_TEM' | awk '{ print \$1,\$2,\$3,'$human_read1',"$zn" , \$5, \$6 } '`;
}
print "$test";
my ($exit_code);
if($test =~ m/OK/i){
$exit_code = 0;
}
if($test =~ m/WARNING/i){
$exit_code = 1;
}
if($test =~ m/CRITICAL/i){
$exit_code = 2;
}
if($test =~ m/UNKNOWN/i){
$exit_code = 3;
}
exit $exit_code;
передав ему нужные параметры, на выходе получим:
SNMP OK - 99.8 *f | iso.3.6.1.4.1.37758.1.10.1.2.3=998
а теперь об интересном:
при выводе на сервере с centos 6.4 вылезает ошибка
Argument "with\n" isn't numeric in division (/) at /usr/lib64/nagios/plugins/check_anv line 14.
External UNKNOWN error 0 *f no output
в обоих случаях perl 5.10.1
Есть у кого какие мысли на этот счет?