У меня есть сервер и локальный ПК. Когда локальный компьютер загружается, я запускаю следующий сценарий, чтобы отобразить вывод журналов сервера локально на ПК.
/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