LINUX.ORG.RU
ФорумAdmin

Выполнение скрипта в зависимости от имени файла


0

1

Здравствуйте! Подскажите пожалуйста - есть скрипт создающий в определенном каталоге файлы вида «событие адресат».

Есть скрипт оповещения, принимающий 2 аргумента (сообщение и адресат) который выполняет определенную команду и выдает результат вида «Ok. message sent»

Я хочу каким - то образом отслеживать появление новых файлов, и в зависимости от имени файла выполнять скрипт оповещения, повторяя до тех пор пока не будет получено сообщение «Ok. message sent», после этого удалять этот файл.

Например: 1. появляется файл «aabbcc 12345»

2. Мы знаем что aabbcc = alarm1 (желательно, чтоб был файл конфигурации объясняющий какой имя файла относится к какому оповещению, т.к. имена файлов могут быть длинными)

3. выполняем скрипт message.sh alarm1 12345 до тех пор пока не получим положительный результат

4. удаляем файл «aabbcc 12345»

5. ждем появления следующего файла

И в чём вопрос то?

Отслеживать можно с помощью incron или пулингом (раз в секунду читать список файлов).

желательно, чтоб был файл конфигурации объясняющий какой имя файла относится к какому оповещению, т.к. имена файлов могут быть длинными

Это вам решать, иногда проще в начале скрипта определять массив соответствий, чем городить отдельный файл-конфиг и его парсинг.

mky ★★★★★ ()
Ответ на: комментарий от ang256

Если у вас возникает вопрос, как выполнить пункт 4:

4. удаляем файл «aabbcc 12345»

то, может быть, вам лучше писать в раздел Job и искать того, кто за скромную плату напишет скрипт за вас. Хотя, может кто и в этот раздел напишет скрипт.

Хотя алгоритм расписан не до конца. Не понятно, есть ли ограничение на число попыток:

до тех пор пока не будет получено сообщение «Ok. message sent»

Нужно ли запускать только один скрипт оповещения, пока он не завершится успешно, или можно (нужно) запускать другие скрипты оповещения параллельно с тем первыми или в промежутках между его запуском.

mky ★★★★★ ()

aabbcc 12345

руки отрывать за пробел в имени файла! Как с ним вообще работать-то?

А то, что тебе нужно, лучше реализовать через очереди POSIX. А то ведь inotify тупит страшно.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от anonymous

Вот именно, что только с извращениями!

А просто do_something_with * не сделаешь!

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

А то ведь inotify тупит страшно

В каких сценариях?

zolden ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.