Ad Widget

Collapse

Внешний скрипт неверно отрабатывается.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • QDe5n1K
    Junior Member
    • Oct 2011
    • 4

    #1

    Внешний скрипт неверно отрабатывается.

    Добрый день! Есть такая проблема:

    1) Имеется внешний скрипт check_share.pl
    -rwxr-xr-x 1 zabbix zabbix 675 Oct 10 17:46 check_share.pl

    PHP Code:
    use strict;
    use 
    DateTime;
    use 
    Time::HiRes qw(gettimeofday);
    my $timeout 20;
    my $dateStart gettimeofday();
    eval {
        
    local $SIG{ALRM} = sub { die "alarm\n" };
        
    alarm $timeout;
        
    my $t=`smbclient //$ARGV[0]/$ARGV[1] -g -U zabbixAD  -P password -c 'ls' -l /tmp/check_share_$ARGV[0].log`;
        if(
    $t =~/failed/ or $t=~/error/ or $t=~/ERROR/){
            print 
    "-2.0";
            }
        else{
            
    my $dateDiff gettimeofday()  - $dateStart;
            
    printf "%.3f",$dateDiff;
            }
        
    alarm 0;
        };
    if ($@) {
         print 
    "-1.0";
         } 
    При попытке запуска этого скрипта ./check_share.pl server resourse в шелле заббикса получается числовой ответ типа 0.003, 0.154 и т.д.

    2) Имеется элемент данных server.domain.com: Access Data", в котором
    тип: внешняя проверка
    ключ check_share.pl[resourse]
    тип информации: числовой (с плавающей точкой)
    и т.д.

    3) имеется триггер Access share Resourse
    {server.domain.com:check_share.pl[resourse].last(#1)}<0 & {server.domain.com:check_share.pl[resourse].last(#2)}<0


    Собственно, сама проблема: триггер всегда показывает "-2", как-будто есть ошибка.
    В чем же дело?(
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Я думаю, что проблема в $ARGV[0], который получается из параметров хоста в Zabbix (может быть имя или IP адрес, в зависимости от настроек), сделайте вывод во временный файл значение этого параметра.

    Comment

    • QDe5n1K
      Junior Member
      • Oct 2011
      • 4

      #3
      Мда, что-то не получается такое сделать.
      дописал в скрипт
      PHP Code:
      my $a=$ARGV[0];
      my $b=$ARGV[1];
          
      open(FIL,">> temp");
          print 
      FIL $dateStart;
          print 
      FIL $a;
          print 
      FIL $b;
          
      close(FIL); 
      при запуске в шелле все нормально пишется в файл. при запуске из заббикса не пишется ничего
      на всякий случай выдержка из /etc/passwd:
      zabbix:*:122:122:Zabbix NMS:/nonexistent:/usr/sbin/nologin

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        Исправьте путь к файлу на /tmp/temp. И проверьте права, чтобы в файл мог писать пользователь zabbix.

        Comment

        • QDe5n1K
          Junior Member
          • Oct 2011
          • 4

          #5
          В качестве $ARGV[0] передается правильный айпи-адрес server.domain.com , в качестве второго $ARGV[1] правильное имя resourse.

          Что думать, куда копать - хз

          Comment

          • dima_dm
            Senior Member
            • Dec 2009
            • 2697

            #6
            Полный путь от корня до smbclient пропишите.

            Comment

            • QDe5n1K
              Junior Member
              • Oct 2011
              • 4

              #7
              Originally posted by dima_dm
              Полный путь от корня до smbclient пропишите.
              путь прописал. Это не помогло.

              Но, с вашей помощью, с задачей все же справился. Решение было найдено с помощью включения вывода в темповый файл помимо всего прочего перменной $t , которая содержала гипотетическую ошибку выполнения smbclient.

              Ошибка была ERROR: Unable to open secrets database

              Решение заключалось в добавлении прав доступа к каталогу samba32, чтобы пользователь заббикс мог достать оттуда служебные самбовые базы данных.

              Проблема решена.
              Спасибо огромное.

              Comment

              Working...