URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10015
[ Назад ]

Исходное сообщение
"Остановка работы скрипта при определённом выводе сообщения"

Отправлено Junior , 14-Июн-15 20:39 
Здравствуйте!

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

Необходимо в скрипте прописать реакцию  на появление сообщения при работе команды.
Т.е.

#!/bin/bash

/usr/local/bin -o option1 -b option2 -c option3
PID=$!
а вот здесь нужно перехватить сообщение с вывода работы команды, например "command work, press ctrl+c" и передать CTRL+C вместо пользователя за клавиатурой.
kill -INT $PID

Что-то типа работы trap, но там ждут срабатывания определённого сигнала, а здесь необходимо сработать от сообщения.
Просто убить процесс нельзя, т.к. потеряются данные, которые приложение пишет в свой файл. А если его оборвать через ctrl+c, оно сохраняет данные.

Заранее спасибо, коллеги.


Содержание

Сообщения в этом обсуждении
"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Pahanivo , 15-Июн-15 07:44 
начни с этого
http://www.opennet.me/base/dev/interactive_tools.txt.html


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Junior , 15-Июн-15 08:15 
> начни с этого
> http://www.opennet.me/base/dev/interactive_tools.txt.html

Спасибо за ссылку, очень интересная статья.
Но в моём случае это не выход, к сожалению.
Устройство, где будет работать скрипт - это маршрутизатор с предустановленной Linux в весьма кастрированном виде, где ОС занимает менее 10 Мб. Поставить туда что-то нереально и необходимо использовать стандартные инструменты скриптового языка.

Ещё раз спасибо за ссылку!


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено name , 15-Июн-15 09:52 
>> начни
> Устройство, где будет работать скрипт - это маршрутизатор с предустановленной Linux в

Тогда запускайте скрипт на сервере, который будет подключаться к вашему устройству


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Junior , 15-Июн-15 09:54 
>>> начни
>> Устройство, где будет работать скрипт - это маршрутизатор с предустановленной Linux в
> Тогда запускайте скрипт на сервере, который будет подключаться к вашему устройству

Так это устройство (маршрутизатор) будет подключаться к другим, проверять их отклики по определённому алгоритму, а сами устройства будут динамически меняться.


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Аноним , 15-Июн-15 16:36 
>> Тогда запускайте скрипт на сервере, который будет подключаться к вашему устройству
> Так это устройство (маршрутизатор) будет подключаться к другим, проверять их отклики по
> определённому алгоритму, а сами устройства будут динамически меняться.

Тогда запускайте скрипт на сервере, который будет подключаться к другим, проверять их отклики по определённому алгоритму, а сами устройства будут динамически меняться.
А на маршрутизаторе - пропишите правила чтоб сервер смог это сделать.


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Junior , 15-Июн-15 17:06 
>>> Тогда запускайте скрипт на сервере, который будет подключаться к вашему устройству
>> Так это устройство (маршрутизатор) будет подключаться к другим, проверять их отклики по
>> определённому алгоритму, а сами устройства будут динамически меняться.
> Тогда запускайте скрипт на сервере, который будет подключаться к другим, проверять их
> отклики по определённому алгоритму, а сами устройства будут динамически меняться.
> А на маршрутизаторе - пропишите правила чтоб сервер смог это сделать.

Всё-таки задача стоит именно такая, как описано. Без поднятия других серверов и устройств. Коллеги, если есть что-то по ситуацию - с благодарностью выслушаю рекомендации и советы.

Спасибо.


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено name , 18-Июн-15 10:39 
> Всё-таки задача стоит именно такая, как описано. Без поднятия других серверов и
> устройств. Коллеги, если есть что-то по ситуацию - с благодарностью выслушаю

Блин, у вас есть устройство, вы хотите запустить на нем некий функционал, его в нем нет. Следовательно вам нужно изменить софт этого устройства. Если вы не можете изменить софт, значит берете другое устройство.

В вашем случае компилируйте дополнительные утилиты для вашего маршрутизатора, копируйте куда-нибудь, флэшка, фтп-сервер.
На устройстве делаете скрипт, который закачивает эти утилиты в память и потом использует


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Junior , 18-Июн-15 17:25 

> Блин, у вас есть устройство, вы хотите запустить на нем некий функционал,
> его в нем нет. Следовательно вам нужно изменить софт этого устройства.
> Если вы не можете изменить софт, значит берете другое устройство.

Не подходит, устройство изменить нельзя

> В вашем случае компилируйте дополнительные утилиты для вашего маршрутизатора, копируйте
> куда-нибудь, флэшка, фтп-сервер.

Для начала необходимо разобраться КАКИМ ОБРАЗОМ возможно решить эту задачу не используя громоздкой конструкции. Иначе либо придётся следить, чтобы все "костыли" исправно работали. Метод использования expect хорош, но он работает при получении какого-либо сигнала или команды, а не сообщения в логах. По-крайней мере я не нашёл такого описания в его функционале.
> На устройстве делаете скрипт, который закачивает эти утилиты в память и потом
> использует

Это не сложно, важнее сперва найти метод и способ решения задачи.


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено anonymous , 18-Июн-15 21:47 
>[оверквотинг удален]
>> В вашем случае компилируйте дополнительные утилиты для вашего маршрутизатора, копируйте
>> куда-нибудь, флэшка, фтп-сервер.
> Для начала необходимо разобраться КАКИМ ОБРАЗОМ возможно решить эту задачу не используя
> громоздкой конструкции. Иначе либо придётся следить, чтобы все "костыли" исправно работали.
> Метод использования expect хорош, но он работает при получении какого-либо сигнала
> или команды, а не сообщения в логах. По-крайней мере я не
> нашёл такого описания в его функционале.
>> На устройстве делаете скрипт, который закачивает эти утилиты в память и потом
>> использует
> Это не сложно, важнее сперва найти метод и способ решения задачи.

Опишите тогда нормально задачу, а не ее ограничения.
Для указанных ограничений уже подсказали способы реализации.


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено Junior , 19-Июн-15 06:22 
>[оверквотинг удален]
>> Для начала необходимо разобраться КАКИМ ОБРАЗОМ возможно решить эту задачу не используя
>> громоздкой конструкции. Иначе либо придётся следить, чтобы все "костыли" исправно работали.
>> Метод использования expect хорош, но он работает при получении какого-либо сигнала
>> или команды, а не сообщения в логах. По-крайней мере я не
>> нашёл такого описания в его функционале.
>>> На устройстве делаете скрипт, который закачивает эти утилиты в память и потом
>>> использует
>> Это не сложно, важнее сперва найти метод и способ решения задачи.
> Опишите тогда нормально задачу, а не ее ограничения.
> Для указанных ограничений уже подсказали способы реализации.

А что не ясно из первого сообщения? Я уточню.


"Остановка работы скрипта при определённом выводе сообщения"
Отправлено мимопроходил , 18-Июл-15 00:20 
> А что не ясно из первого сообщения? Я уточню.

#!/bin/bash

/usr/local/bin -o option1 -b option2 -c option3
PID=$!
а вот здесь нужно перехватить сообщение с вывода работы команды, например "command work, press ctrl+c" и передать CTRL+C вместо пользователя за клавиатурой.
kill -INT $PID

++++++++++++++++++++++++++++++++

#!/bin/bash
PID=$!

/usr/local/bin -o option1 -b option2 -c option3 | grep 'press crtl+c' && kill -INT $PID