treb = time range regular expression builder
Существует ли тулза, которая по заданному временному интервалу генерирует регулярное выражение для отбора grep'ом из логов? Ну например сделать из временного интервала:
Jan 22 16:11:23 - Mar 08 13:43:54
такое:
Jan (22 (16:(11:(2[3-9]|[3-5])|1[2-9]|[2-5])|1[7-9]|2[0-3])|2[3-9]|3)|Feb|Mar (08 (13:(43:([0-4]|5[0-4])|[0-3]|4[0-2])|0|1[0-2])|0[1-7])
Я просто попробовал через date преобразовывать timestamp'ы в секунды и отбирать то, что входит в интервал, но это страшно медленно, как оказалось.
Пример задачи: есть OpenVPN клиент к vpnbook, который, как известно, периодически меняет пароль. Есть скрипт на клиенте, котрый проверяет OpenVPN интерфейс, скажем, каждые 5 минут. Если интерфейс упалый, то, чтобы не парсить лишний раз сайт vpnbook в поисках нового пароля, надо бы узнать из логов, что причина именно в смене пароля. Т. е. найти в логе записи с предыдущего запуска скрипта, а в них - AUTH_FAILED.
Все это из$ебство чистой воды, я понимаю и знаю про tail -r пицот, но мы перфекционисты таки таковы. Задача показалась интересной для ума. Алгоритм я додумаю, но сам уж лет 20 как не программист. Какой-нибудь знакомый для меня C - это слишком большой порог вхождения при переходе на linux. Немного колупаю Perl, но тащить его за собой ради такой задачи - это слишком. На чем писать-то? Какой-нибудь shell умеет в рекурсию?