The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Модуль на Perl для Nagios"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Модуль на Perl для Nagios"  +/
Сообщение от vagner email on 13-Май-09, 09:19 
Добрый день! Прошу помощи в проверке написанного скрипта... Сам не могу разобраться в чем проблема:( В перле я новичек, поэтому некоторые куски брал из инета... Суть ошибки:
serverbsd# ./check_cpu
syntax error at ..../nagios/check_cpu line 7, near "= ;"
Excution of ..../nagios/check_cpu aborted due to compilation errors.

Собственно исходный код:

serverbsd# cat ..../nagios/check_cpu
#! /usr/bin/perl -w
use strict;
my $file = '/var/mbmon-nagios';
my $line;

open FD, $file;
#########################
# Строка в которой ошибка
#########################
$line = ;

close FD;

my ($TEMP_proc1, $TEMP_proc2, $FAN_speed_proc1, $FAN_speed_proc2, $nagios_data, $nagios_status, $exit_code);
my @arg;
@arg = split(/;/, $line);

$arg[0] =~ /^TEMPproc1:(.*)$/;
$TEMP_proc1 = $1;
$arg[1] =~ /^TEMPproc2:(.*)$/;
$TEMP_proc2 = $1;
$arg[2] =~ /^FANspeed_proc1:(.*)$/;
$FAN_speed_proc1 = $1;
$arg[3] =~ /^FANspeed_proc2:(.*)$/;

$nagios_data = sprintf("|TEMP_proc1=%f;;;    TEMP_proc2=%f;;;    FAN_speed_proc1=%f;;;    FAN_speed_proc2=%f;;;",$TEMP_proc1,$TEMP_proc2,$FAN_speed_proc1,$FAN_speed_proc2);
if ( $TEMP_proc1 == 0 ) {
    $nagios_status = "CPU status: CRITICAL, temp_proc1 $TEMP_proc1 %";
    $exit_code = 2;
} elsif ( $TEMP_proc1 < 5 ) {
    $nagios_status = "CPU status: WARNING, temp_proc1 $TEMP_proc1 %";
    $exit_code = 1;
} else {
    $nagios_status = "CPU status: OK, temp_proc1 $TEMP_proc1 %";
    $exit_code = 0;    
}

print $nagios_status . $nagios_data;
exit $exit_code;

И вспомогательный файл откуда берутся данные:
serverbsd# cat /var/mbmon-nagios
TEMP_proc1:33.0;TEMP_proc2:34.0;FAN_speed_proc1:1670;FAN_speed_proc2:1962


Буду премного благодарен за помощь!

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Модуль на Perl для Nagios"  +/
Сообщение от phpcoder email(??) on 13-Май-09, 09:22 
>syntax error at ..../nagios/check_cpu line 7, near "= ;"

[skip]
>$line = ;

Что не понятно? Нужно переменной присвоить значение, а вы ничего не присваивате. В зависимости от контекста нужно присвоить 0 или пустую строку, например.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Модуль на Perl для Nagios"  +/
Сообщение от vagner email on 13-Май-09, 09:33 
>>syntax error at ..../nagios/check_cpu line 7, near "= ;"
>
>[skip]
>>$line = ;
>
>Что не понятно? Нужно переменной присвоить значение, а вы ничего не присваивате.
>В зависимости от контекста нужно присвоить 0 или пустую строку, например.
>

Насколько я понимаю - у меня в файле с которого берутся данные постоянно первая строка... Но при значении $line = ""; или $line = 0; и прочих вариантах у меня вывыливается куча ошибок:

serverbsd# ..../nagios/check_cpu
Use of uninitialized value in pattern match (m//) at ..../nagios/check_cpu line 16
Use of uninitialized value in pattern match (m//) at ..../nagios/check_cpu line 18
Use of uninitialized value in pattern match (m//) at ..../nagios/check_cpu line 20
Use of uninitialized value in sprintf at ..../nagios/check_cpu line 22
Use of uninitialized value in sprintf at ..../nagios/check_cpu line 22
Use of uninitialized value in sprintf at ..../nagios/check_cpu line 22
Use of uninitialized value in sprintf at ..../nagios/check_cpu line 22
Use of uninitialized value in numeric eq (==) at ..../nagios/check_cpu line 23
Use of uninitialized value in concatenation (.) or string at ..../nagios/check_cpu line 24
CPU status: CRITICAL, temp_proc1 %|TEMP_proc1=0.000000;;; TEMP_proc2=0.000000;;; FAN_speed_proc1=0.000000;;; FAN_cpeed_proc2=0.000000;;;

Я просто в замешательстве:((

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Модуль на Perl для Nagios"  +/
Сообщение от phpcoder email(??) on 13-Май-09, 09:38 
>Насколько я понимаю - у меня в файле с которого берутся данные
>постоянно первая строка... Но при значении $line = ""; или $line
>= 0; и прочих вариантах у меня вывыливается куча ошибок:

Если line это строка, то логичнее было бы ей присвоить пустую строку по умолчанию.

Остальные ошибки это уже _другие_ ошибки, которые у вас встречаются ниже в скрипте, так что вашей следующей задачей является исправть их. В частности большая часть проблем из-за неинциализированных переменных. Причем исправив это (инициализировав их) часть следующих предупреждений просто исчезнет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Модуль на Perl для Nagios"  +/
Сообщение от vagner email on 13-Май-09, 09:57 
>[оверквотинг удален]
>>постоянно первая строка... Но при значении $line = ""; или $line
>>= 0; и прочих вариантах у меня вывыливается куча ошибок:
>
>Если line это строка, то логичнее было бы ей присвоить пустую строку
>по умолчанию.
>
>Остальные ошибки это уже _другие_ ошибки, которые у вас встречаются ниже в
>скрипте, так что вашей следующей задачей является исправть их. В частности
>большая часть проблем из-за неинциализированных переменных. Причем исправив это (инициализировав их)
>часть следующих предупреждений просто исчезнет.

Простоте за темность, я как понимаю ошибка первая мне говорит тогда о том, что переменная $arg[1] не инициализированна, но я выше ее вроде как инициализировал такими строками:
my @arg;
@arg = split(/;/, $line);

Подскажите плиз где я включаю тормоз:(((

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Модуль на Perl для Nagios"  +/
Сообщение от angra (ok) on 13-Май-09, 10:13 
И чем же вы ее инициализировали? arg[0] у вас инициализировался пустой строкой из $line, а вот на заполнение всех остальных элементов массива осталась только путоста. А если пустоту разбить(split) на несколько кусочков, то в каждом из них окажется, кто бы мог подумать, пустота.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Модуль на Perl для Nagios"  +/
Сообщение от vagner email on 13-Май-09, 12:43 
>И чем же вы ее инициализировали? arg[0] у вас инициализировался пустой строкой
>из $line, а вот на заполнение всех остальных элементов массива осталась
>только путоста. А если пустоту разбить(split) на несколько кусочков, то в
>каждом из них окажется, кто бы мог подумать, пустота.

Огромное спасибо!!! Оказалось я там намудрил еще и в тех строках:-[ Я в перле еще полный ноль( Все заработало:) Но если не сложно? расскажите пожалуйста что значит <FD> - оч интересно понять:-[

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Модуль на Perl для Nagios"  +/
Сообщение от angra (ok) on 16-Май-09, 16:31 
open FD, $file; #открыли файл, связав с ним file handler FD
$line =<FD> ; #прочитали из файла _одну_ строку в $line
close FD; #закрыли файл

perl довольно простой язык, по нему есть отличные книги и с ним идет хорошая дока. Что вам мешает этим воспользоваться? Например perldoc -f open выдал бы вам описание open и кучу примеров использования

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Модуль на Perl для Nagios"  +1 +/
Сообщение от angra (ok) on 13-Май-09, 10:09 
Вы бы хоть сказали, что получить хотите ибо скрипт набор почти бессмысленных действий и умещается в однострочник.
Исправление вашей проблемной строки:
$line = <FD>;

P.S. Честное слово любопытно увидеть процессоры для которых критичным является охлаждение, а не нагрев. Вы часом не из параллельной вселенной? :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Модуль на Perl для Nagios"  +/
Сообщение от vagner email on 13-Май-09, 12:34 
>Вы бы хоть сказали, что получить хотите ибо скрипт набор почти бессмысленных
>действий и умещается в однострочник.
>Исправление вашей проблемной строки:
>$line = <FD>;
>
>P.S. Честное слово любопытно увидеть процессоры для которых критичным является охлаждение, а
>не нагрев. Вы часом не из параллельной вселенной? :)

Я хотел получить полноценный вывод типа: Status ok и данные по переменным:-[
А вы не могли бы помочь разобраться в том что означает $line = <FD>; Оно избавило от части ошибок - но ошибки про переменные в строке с sprintf остались((

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Модуль на Perl для Nagios"  +/
Сообщение от Pahanivo email(ok) on 13-Май-09, 11:01 
уже синтакс еррор в скрипте из 10 строк найти не можем
пипл сильно деградирует (((

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру