The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Запрос на подтверждение при вызове init, !*! Mixalap, 04-Окт-12, 15:31  [смотреть все]
Необходимо сделать, чтобы при вызове команды init 0 появлялся запрос на подтверждение: "Вы действительно хотите выключить копмутер?"
Написал bash-скрипт с запросом подтверждения, прописал его в inittab для 0 уровня, чтоб при вызове init 0 запускался мой скрипт. Через локальную консоль всё работает.

Но проблема, если выполнить init 0 подключившись по ssh, то запрос на подтверждение и считывание ответа (read) высвечивается всё равно на локальной консоли, а не в ssh подключении.
Подскажите, как можно перенаправить вывод вопроса, а главное ввод ответа (yes|no) из ssh-терминала в локальную консоль?

  • Запрос на подтверждение при вызове init, !*! XAnder, 17:13 , 04-Окт-12 (1)
    > Но проблема, если выполнить init 0 подключившись по ssh, то запрос на
    > подтверждение и считывание ответа (read) высвечивается всё равно на локальной консоли,
    > а не в ssh подключении.
    > Подскажите, как можно перенаправить вывод вопроса, а главное ввод ответа (yes|no)
    > из ssh-терминала в локальную консоль?

    Вот представьте себе, что одновременно активны несколько терминалов: обычные, иксовые, тот же ssh и т. п. А теперь попробуйте придумать способ (алгоритм), как выбрать, какому из них задать этот вопрос. Дело в том, что init-скрипты выполняются "сами по себе", они не знают, какой терминал инициировал смену уровня выполнения, и потому тупо общаются с локальной консолью. Да и терминал ли - может это ИБП обнаружил, что "электричество кончилось" и вырубает систему, а может и ещё что-нибудь. Я не говорю, что задача не имеет решения, я говорю, что она значительно хитрее, чем кажется.

    • Запрос на подтверждение при вызове init, !*! Mixalap, 18:05 , 04-Окт-12 (2)
      > Вот представьте себе, что одновременно активны несколько терминалов: обычные, иксовые,
      > тот же ssh и т. п. А теперь попробуйте придумать способ
      > (алгоритм), как выбрать, какому из них задать этот вопрос. Дело в
      > том, что init-скрипты выполняются "сами по себе", они не знают, какой
      > терминал инициировал смену уровня выполнения, и потому тупо общаются с локальной
      > консолью. Да и терминал ли - может это ИБП обнаружил, что
      > "электричество кончилось" и вырубает систему, а может и ещё что-нибудь. Я
      > не говорю, что задача не имеет решения, я говорю, что она
      > значительно хитрее, чем кажется.

      Углубляясь в проблему, я всё больше это понимаю. =)
      Пробовал отслеживать PID процесса своего скрипта (после запуска init 0) и отправить ответ echo`ом ему в дескриптор 0.
      На консоли ответ отображается, но скрипт ответ не чувствует, только вводом с консоли.
      Думаю, какие ещё есть пути?
      Могу ли я сделать алиас init 6, который будет запускать мой скрипт, а мой скрипт уже запустит init 6(оригинальный)?
      Казалось бы тривиальная задача, но - ступор.
      А обезопасить себя и коллег нужно, т.к. грань между init 6 и 0 очень тонкая)). Особенно обидно, работая по удалёнке.

  • Запрос на подтверждение при вызове init, !*! Аноним, 14:36 , 23-Окт-12 (4)
    > Необходимо сделать, чтобы при вызове команды init 0 появлялся запрос на подтверждение:
    > "Вы действительно хотите выключить копмутер?"
    > Написал bash-скрипт с запросом подтверждения, прописал его в inittab для 0 уровня,
    > чтоб при вызове init 0 запускался мой скрипт. Через локальную консоль
    > всё работает.

    подмени инит: положи свой скрипт в /usr/bin, из него после подтверждения вызывай /sbin/init.




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

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