The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Модуль на Perl для Nagios, !*! vagner, 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


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

  • Модуль на Perl для Nagios, !*! phpcoder, 09:22 , 13-Май-09 (1)
    >syntax error at ..../nagios/check_cpu line 7, near "= ;"

    [skip]
    >$line = ;

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

    • Модуль на Perl для Nagios, !*! vagner, 09:33 , 13-Май-09 (2)
      >>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;;;

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

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

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

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

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

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

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

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

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

              • Модуль на Perl для Nagios, !*! angra, 16:31 , 16-Май-09 (10)
                open FD, $file; #открыли файл, связав с ним file handler FD
                $line =<FD> ; #прочитали из файла _одну_ строку в $line
                close FD; #закрыли файл

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

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

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

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

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

  • Модуль на Perl для Nagios, !*! Pahanivo, 11:01 , 13-Май-09 (7)
    уже синтакс еррор в скрипте из 10 строк найти не можем
    пипл сильно деградирует (((




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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