На самом деле вы задаете 3 вопроса. -Я начну с первого, а два других вы должны попытаться решить сами, используя ту же базовую структуру (есть много примеров на этот сайт для использования Awk для числовой обработки, такой как усреднение):
Используйте Awk в режиме абзаца (, сняв разделитель записей, RS
), разделив запись на поля с помощью =
и\n
(новой строки):
$ awk -vRS= -F'[=\n]' '/STATUS=FAIL/{print $4}' file.log
189.23.34.23
189.23.34.23
Я создал тупой маленький веб-сервис с помощью nc
, и, похоже, он у меня работает:
#!/bin/bash
while true;
# reply to web traffic with a basic 200 response
do cat /usr/local/bin/200.http |
# listen on port 80
nc -l 80 |
# save any json to a file
grep '{"transaction"' >> /path/to/logs.json
done
Я обернул его в службу и установил брандмауэр для этого конкретного устройства.