Назад | Перейти на главную страницу

Передать вывод из хвоста в фоновый скрипт, все еще отображая данные

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

/usr/bin/ssh -p '444' 'user@remoteserver' "tail -f /log/short.log"

Пока все работает отлично, но я хотел бы также передавать этот вывод другому фоновому скрипту каждый раз, когда в «хвосте» появляется новая строка. Затем фоновый скрипт проверит, содержит ли данная строка какие-либо ключевые слова, и если это совпадение, то он будет воспроизводить звук, в то время как исходный хвост по-прежнему будет работать и отображать данные на экране, как и раньше.

Скрипт для проверки ключевых слов / воспроизведения звука я могу легко сделать, но часть, которую я не понимаю, - это как я могу передать каждую новую строку в свой скрипт и при этом выводить результат на экран.

Ты можешь использовать tee для разделения одного входного потока на два или более выходных потоков. tee записывает весь ввод в стандартный вывод и в файлы, указанные в командной строке.

Рассматривать:

ssh somewhere "tail -f /var/log/whatever.log" | tee /dev/tty | /usr/local/bin/myscript