Ad Widget

Collapse

zabbix_agentd vs /dev/ttyS*

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • SteveG
    Junior Member
    • Sep 2012
    • 4

    #1

    zabbix_agentd vs /dev/ttyS*

    Здравствуйте, уважаемые!!!

    Бьюсь уже 3-ий день с этой проблемой!!!

    есть скрипт, выдающий напряжение аккумулятора на компьютере...принимает сигнал он с микроконтроллера с /dev/ttyS0-порта..на этой машине установлен zabbix_agentd, который стартует по умолчанию от zabbix-user'а....На zabbix-сервере пытаюсь получить данные zabbix_get -s *** -k ****, предварительно , конечно же в zabbix_agentd.conf UserParameter необходимый завел


    Результаты:
    1) локально скрипт выполняется
    2)с помощью zabbix_get с сервера - нет, говорит device or resource busy
    3) AllowRoot = 1 ставлю - перезапускаю - все работает..Из под root-a теперь уже!

    Надо, чтобы работало из под zabbix..для этого пытался делать следующее

    1)в /etc/group к группе uucp добавил zabbix, поскольку группа в /dev/ttyS0 указана uucp
    2)дал и группе и пользователю /dev/ttyS0 права на чтение и запись
    3)сhown zabbix:zabbix /dev/ttyS0 тоже пробовал
    4) на скрипт права на чтение и запись...setuid даже..chmod ug+s **.sh
    5)на все папки типа /var/log/zabbix и /var/lock даже на всякий случай дал права zabbix-у, хотя строки создания и удаления lockfile-а я удали пока что



    Уже не знаю как и быть!!!! ПОМОГИТЕЕЕЕЕЕ
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Не работают SUID биты на Shell скриптах
    Здесь написано почему:


    Можно, например, написать SUID скрипт на Perl, но нужно ставить дополнительный пакет perl-suidperl.

    А менять права на системные файлы /dev/ttyS0 вообще очень плохая идея.
    Last edited by dima_dm; 20-09-2012, 09:49.

    Comment

    • Jimson
      Senior Member
      • Jan 2008
      • 1327

      #3
      эти девайсы должны быть доступны для чтения-записи для обычных пользователей принадлежаших некоторой группе, все это сильно зависит от дистрибутива
      а пытаться решить проблему меняя владельца/группу на "системные" каталоги и файлы и уж тем более через suid скрипты не правильно

      в качестве примера вам утилитки tip или cu

      Comment

      • SteveG
        Junior Member
        • Sep 2012
        • 4

        #4
        А чуть чуть поконкретнее нельзя?

        платформа AltLinux у меня 32-bit

        я вот видел материал здесь - так тут вобще все просто, складывается ощущение что под RedHat все кульно получается...
        Статья о настройке SMART мониторинга HDD в Zabbix для операционных систем Fedora/RHEL/CentOS. Настройки smartmontools для Linux Fedora RedHat CentOS.


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

        Comment

        • Jimson
          Senior Member
          • Jan 2008
          • 1327

          #5
          Этих дистрибутивов линукса с "нескучными обоями" каждый год по 100 штук новых, за 15 лет существования линукса дело дошло до абсурда. В FreeBSD это группа "dialer".

          Верните все права и владельцев какие они были изначально. Поставьте утилитку tip или cu и добейтесь что бы она нормально цеплялась к порту из под обычного пользователя, добавив пользователя в соответсвующую группу.

          Comment

          • den_crane
            Senior Member
            • Feb 2006
            • 272

            #6
            Дописать в /etc/sudoers
            zabbix ALL = NOPASSWD:/home/bin/myscript

            а в conf дописать sudo

            UserParameter=myparam,sudo /home/bin/myscript

            Comment

            • SteveG
              Junior Member
              • Sep 2012
              • 4

              #7
              Всем спасибо большое!!! Я не знал вообще Perl, но решил перевести мою программку на нее и без всяких SUID и смены пользователей заработало как надо!!

              Если кто может ответить на вопросы - ответьте плиз:

              1) почему скрипт на perl работал их под zabbix c com-портом, а sh - нет
              2) я наверное сам найду как, но пока не могу - так что если не сложно - как вставить вот в эту конструкцию -

              print SERIAL_WRITER "$'\x02'" вместо 02 значение переменной, передаваемой скрипту

              Знаю, что юзается $ARGV[0], но не могу правильно ее засунуть туда((

              Comment

              • SteveG
                Junior Member
                • Sep 2012
                • 4

                #8
                Смог сделать только так

                $tempo = '$\'\x'.$ARGV[0].'\'';
                system("echo -n -e $tempo > /dev/ttyS0");

                Можно как нибудь попроще отправить такой код в порт?



                Самое интересное что print $tempo выдает $'\x02'


                но print SERIAL_WRITER $tempo("$tempo") не срабатывает, тогда как

                print SERIAL_WRITER "$'\x02'" - срабатывает и возвращается ответ..как так?

                Comment

                Working...