Page 1 of 7 123 ... LastLast
Results 1 to 15 of 96

Thread: Скрипт перезагрузки роутера

  1. #1

    Post Скрипт перезагрузки роутера

    Здравствуйте!

    Столкнулся с необходимостью выполнять команды reboot и halt из php скрипта. Веб сервер lighttpd и php-fcgi запущены с минимальными правами юзера nobody. Проблема в том, что reboot и halt может запускать только суперпользователь и, поэтому, из php скрипта они не срабатывают. Подскажите, пожалуйста, как элегантым образом решить эту проблему.

  2. #2
    Quote Originally Posted by Andrey_3 View Post
    Здравствуйте!

    Столкнулся с необходимостью выполнять команды reboot и halt из php скрипта. Веб сервер lighttpd и php-fcgi запущены с минимальными правами юзера nobody. Проблема в том, что reboot и halt может запускать только суперпользователь и, поэтому, из php скрипта они не срабатывают. Подскажите, пожалуйста, как элегантым образом решить эту проблему.
    как вариант скрипт создает файл /tmp/reboot
    а крон проверяет есть ли файл и если есть его прибивает и перегружает рутер
    vim имеет два режима - бибикать и все портить (с) не мое

  3. #3
    Quote Originally Posted by angel_il View Post
    как вариант скрипт создает файл /tmp/reboot
    а крон проверяет есть ли файл и если есть его прибивает и перегружает рутер
    Спасибо за интересный вариант. Однако, для быстрого выполнения команд (1-5 сек) придется и проверку наличия /tmp/reboot делать очень часто. Нагрузка на роутер, вероятно, будет большой.

  4. #4
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    Quote Originally Posted by angel_il View Post
    как вариант скрипт создает файл /tmp/reboot
    а крон проверяет есть ли файл и если есть его прибивает и перегружает рутер
    Вот для примера 3 варианта реализации:
    • Реализация с помощью крона, интервал проверки минимум 1 минута:
      Code:
      #!/bin/sh
      mkdir -p /var/spool/cron/crontabs
      /usr/sbin/crond
      echo '* * * * * [ -e /tmp/reboot ] && reboot' | /usr/bin/crontab -
    • Реализация с бесконечным циклом в скрипте, интервал проверки минимум 1 секунда:
      Code:
      #!/bin/sh
      (while :; do 
          [ -e /tmp/reboot ] && reboot
          sleep 1
      done) &
    • Реализация на си, интервал проверки минимум 1 секунда:
      Code:
      #include <stdlib.h>
      #include <unistd.h>
      #include <sys/stat.h>
      
      int 
      main(int argc, char *argv[]) 
      {
      	struct stat stats;
      	pid_t pid = fork();
      	if (pid > 0)
      		return 0;
      	if (pid < 0)
      		return 1;
      	for(;;) {
      		if (!stat("/tmp/reboot", &stats)) 
      			system ("reboot");
      		sleep (1);
      	}
      }

  5. #5
    Quote Originally Posted by Mam(O)n View Post
    Вот для примера 3 варианта реализации:
    • Реализация с помощью крона, интервал проверки минимум 1 минута
    • Реализация с бесконечным циклом в скрипте, интервал проверки минимум 1 секунда
    • Реализация на си, интервал проверки минимум 1 секунда:
    Спасибо за предложенные реализации.
    Первый вариант с кроном не подходит, так как слишком велик интервал проверки.
    Исследовал второй вариант на sh. Третий вариант на C пока пробовать не стал, так как под рукой нет компилятора. Зато есть perl, поэтому заменил его аналогичной реализацией:
    Code:
    #!/opt/bin/perl
    use strict;
    defined (my $pid = fork) or die "Can't fork: $!";
    exit 0 unless $pid == 0;
    while(1) {
        exec('reboot') if -e '/tmp/reboot';
        sleep(1);
    }
    Интересно, что судя по показаниям htop, вариант на sh дает пиковую нагрузку на процессор до 2-3%, тогда как для варианта на perl показания htop вообще всегда нулевые. Понятно, что реализация на perl отъедает в 5-6 раз больше пямяти. Теперь буду думать что же выбрать.

  6. #6
    Quote Originally Posted by Andrey_3 View Post
    Подскажите, пожалуйста, как элегантым образом решить эту проблему.
    Поставить и настроить sudo.
    Другой вариант - suid-скрипт или программа.

  7. #7
    Quote Originally Posted by ABATAPA View Post
    Поставить и настроить sudo.
    Другой вариант - suid-скрипт или программа.
    Спасибо за подсказку. В конечном итоге удалось достичь всего желаемого с помощью sudo.

  8. #8

    Plink.exe и батник

    Поделитесь рабочей командой с использованием plink.exe для использования в батнике что-то типа этого
    Code:
    start plink -ssh -batch -l root -pw ***** 192.168.1.11 /opt/etc/init.d/S99rtorrent start
    только так у меня не работает
    WL-700GE,rtorrent,amule, mldonkey, прошивка kfurge
    ВСЕ на выборы !
    Для новичков и ленивых

  9. #9
    а почему имя пользователя root? В асусах же по умолчанию имя пользователя admin.

  10. #10
    Quote Originally Posted by Mashiro-sama View Post
    а почему имя пользователя root? В асусах же по умолчанию имя пользователя admin.
    У меня root и admin одинаково.
    Суть не в этом, имя и пароль правильные.
    WL-700GE,rtorrent,amule, mldonkey, прошивка kfurge
    ВСЕ на выборы !
    Для новичков и ленивых

  11. #11

    Скрипт авто-перезагрузки на прошивке Олега

    Имею WL-500W c последней прошивкой от Олега.
    Корбина + L2TP

    Проблема в том, что через 5-7 дней аптайма рутер виснет намертво.
    Лечится передергиванием питания.

    ВОПРОС:
    Как мне прикрутить к рутеру скрипт автоматической перезагрузки, например раз в 5 дней?
    И чтобы он это помнил после перегруза по питанию?

    Спасибо заранее за помощь

  12. #12
    Join Date
    Feb 2008
    Location
    Dniepropetrovsk, Ukraine
    Posts
    1,527

    Exclamation

    Quote Originally Posted by Dusha View Post
    Имею WL-500W c последней прошивкой от Олега.
    Корбина + L2TP

    Проблема в том, что через 5-7 дней аптайма рутер виснет намертво.
    Лечится передергиванием питания.

    ВОПРОС:
    Как мне прикрутить к рутеру скрипт автоматической перезагрузки, например раз в 5 дней?
    И чтобы он это помнил после перегруза по питанию?

    Спасибо заранее за помощь
    поставьте Crontab (Cron) из репозитория ipkg - планировщик заданий и уже крону говорите когда апускать на роутер на перезагрузку.

  13. #13
    cron (crond) уже есть в прошивке, ставить отдельно не обязательно

  14. #14
    Join Date
    Apr 2008
    Location
    город самоваров и пряников
    Posts
    1,492
    А если запрограммировать кнопку EZ-SETUP на перезагрузку и нажимать её в критических ситуациях?

  15. #15
    Quote Originally Posted by theMIROn View Post
    cron (crond) уже есть в прошивке, ставить отдельно не обязательно
    Спасибо, нашел подробный туториал!
    http://wl500g.info/showpost.php?p=15933&postcount=3

    Все настроил
    Last edited by Dusha; 05-01-2009 at 12:08.

Page 1 of 7 123 ... LastLast

Similar Threads

  1. Скрипт чтения СМС на 3G модеме (ussd)
    By dlukanidin in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 114
    Last Post: 03-06-2022, 04:48
  2. Установка программ для чайника" (Новая редакция)
    By Rung in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 722
    Last Post: 14-08-2019, 06:04
  3. Скрипт для диагностики Wi-Fi
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 19
    Last Post: 13-03-2016, 20:29
  4. Replies: 356
    Last Post: 01-01-2013, 22:33
  5. Replies: 33
    Last Post: 09-07-2010, 14:30

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •