erohin_d
@erohin_d
DevOps в ЛАНИТ

Цикл в bash на проверку файла на наличие строки и вывод сообщения?

Нужен скипт, чтобы постоянно залезать в файл последнего лога (в папке несколько логов, логи генерируются по дате и времени в формате на подобие: 03-06_22-57-25_Ser.log ) проверять содержимое на наличие строки содержащей в себе "Инициализация сервера завершена", а когда появится такая строка выполнить выдачу сообщения "Привет".
  • Вопрос задан
  • 3485 просмотров
Решения вопроса 1
erohin_d
@erohin_d Автор вопроса
DevOps в ЛАНИТ
Сделал в итоге вот так:

time=`date +%m-%d`
i=`grep Инициализация /opt/ruby_projects/VS/line1/rvec/conf/.netbeans-config/var/log/$time*.log | grep сервера`
while [ -z "$i" ]
do
i=`grep Инициализация /opt/ruby_projects/VS/line1/rvec/conf/.netbeans-config/var/log/$time*.log | grep сервера`
done
echo "Сервер line01 запущен"

Хотя проблема, что это не последний лог осталась(
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@ShamblerR
1. большой ли лог.
2. tail + grep + if
3. ты хоть совесть имей пример лога, требуемой строки, тут с телепатией совсем плохо.
Ответ написан
@flameflower74
IT'шник
А можно расшифровать формат даты?
Ответ написан
@Wolf4ara
сисадмин и не более
я бы делал через сислог + монит (или свою "собаку", к примеру или incron).
source - лог файл
filter - искомая строка
destination - любой файл

логика работы:
сислог отфильтровывает сообщения и сохраняет их в файл, "собака" или монит или incron выполняют действие, при изменении файла
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы