Освоение скриптописания под shell, Vadim_nsk, 11-Дек-09, 06:23 [смотреть все]#!/bin/sh cat /var/log/auth.log | grep "Invalid user" | expand | tr -s ' ' | cut -d' ' -f8 -f10 > /tmp/block_users_ip_list.txt cat /var/log/auth.log | grep "authentication error" | expand | tr -s ' ' | cut -d' ' -f13 -f15 >> /tmp/block_users_ip_list .txt cat /tmp/block_users_ip_list.txt | cut -d' ' -f1 | sort | uniq -c > /tmp/block_users_list.txt cat /tmp/block_users_ip_list.txt | cut -d' ' -f2 | sort | uniq -c | sort -n > /tmp/block_ip_list.txt rm -rf /tmp/block1.txt cat /tmp/block_users_list.txt /tmp/block_ip_list.txt | while read cnt text; do if [ $cnt -ge 3 ]; then cat /tmp/block_users_ip_list.txt | grep $text | cut -d' ' -f2 | while read ip; do case $ip in *[!01-9.]*|"");; *) echo $ip >> /tmp/block1.txt;; esac done fi done cat /tmp/block1.txt /etc/block_list_ip.txt | sort -n | uniq > /tmp/block2.txt cp /tmp/block2.txt /etc/block_list_ip.txt Задача простая. Например, раз в час, анализируем файл /var/log/auth.log, ищем в нем подстроки "Invalid user" и "authentication error", создаем список имен и адресов. и если, имя или адрес встретились более 3-х раз, пишем адрес в файл /etc/block_list_ip.txt. Но уж сильно топорно и ресурсоемко у меня все это получилось... Попытался переписать:
bunzip2 -kcf /var/log/auth.log.0.bz2 | cat - /var/log/auth.log | grep "Invalid user\|authentication error" | while read str; do echo $str > /tmp/block1.txt done И на этом застрял... Задача: в найденных строках выделить слово, следующее за "user" и слово, следующее за "from". Т.е. username и ip-address. Далее, хочу пока сформировать также два файла или массива имен и адресов. подсчитать количество повторений и вторым проходом уже вычленить адреса. Может кто подскажет как выделить слово в строке, следующее за искомым? При этом, чтобы это работало в потоке. В идеале конечно, хотелось бы сформировать файл из двух столбцов: "username ip-addreess". И считать повторы по первому и второму столбцу. Но на это у меня нет даже идей... Моя задача сейчас, изучить получше работу с shell, потом уже перейду к Perl. Поэтому примеры на Perl это хорошо, но не то, что нужно мне сейчас...
|
- Освоение скриптописания под shell, phpcoder, 07:08 , 11-Дек-09 (1)
- Освоение скриптописания под shell, Vadim_nsk, 08:06 , 11-Дек-09 (2)
>>Задача простая. >Я бы её на awk сделал. (К сожалению, у меня нет под >рукой файла с тестовыми данными, чтобы написать и опробовать такой скрипт.) Dec 10 05:43:08 gw sshd[1157]: error: PAM: authentication error for illegal user acosta from 92.79.128.167 Dec 10 06:05:31 gw sshd[2005]: Invalid user oracle from 218.76.193.140 Dec 10 06:05:35 gw sshd[2007]: Invalid user test from 218.76.193.140 Dec 10 06:05:38 gw sshd[2011]: Invalid user test from 218.76.193.140 Dec 10 06:05:42 gw sshd[2013]: Invalid user test from 218.76.193.140 Dec 10 06:05:45 gw sshd[2015]: Invalid user user from 218.76.193.140 Dec 10 06:05:49 gw sshd[2017]: Invalid user apache from 218.76.193.140 Dec 10 06:17:15 gw sshd[2485]: Invalid user hesse from 217.136.232.11 Dec 10 06:17:15 gw sshd[2485]: error: PAM: authentication error for illegal user hesse from 217.136.232.11 Dec 10 06:24:51 gw sshd[2730]: Invalid user hh from 99.234.5.98 Dec 10 06:24:51 gw sshd[2730]: error: PAM: authentication error for illegal user hh from 99.234.5.98 Dec 10 07:48:53 gw sshd[5621]: Invalid user hr from 211.143.78.2 Dec 10 07:48:54 gw sshd[5621]: error: PAM: authentication error for illegal user hr from 211.143.78.2 Dec 10 08:03:26 gw sshd[6134]: Invalid user http from 99.234.5.98 Dec 10 08:03:27 gw sshd[6134]: error: PAM: authentication error for illegal user http from 99.234.5.98 Dec 10 08:53:29 gw sshd[8092]: error: PAM: authentication error for vadim from 192.168.114.26 Dec 10 08:53:36 gw sshd[8092]: error: PAM: authentication error for vadim from 192.168.114.26 Dec 10 10:18:57 gw sshd[11523]: Invalid user info from 81.189.96.100 Dec 10 10:18:57 gw sshd[11523]: error: PAM: authentication error for illegal user info from 81.189.96.100 Dec 10 11:13:41 gw sshd[13447]: Invalid user internet from 80.169.105.159 Dec 10 11:13:41 gw sshd[13447]: error: PAM: authentication error for illegal user internet from 80.169.105.159 Dec 10 11:55:05 gw sshd[14823]: Invalid user irina from 85.70.129.57 Dec 10 11:55:07 gw sshd[14823]: error: PAM: authentication error for illegal user irina from 85.70.129.57 Dec 10 12:16:26 gw sshd[15777]: Invalid user is from 209.203.56.150 Dec 10 12:16:27 gw sshd[15777]: error: PAM: authentication error for illegal user is from 209.203.56.150 Dec 10 12:19:46 gw sshd[15984]: Invalid user istvan from 200.75.72.185 Dec 10 12:19:46 gw sshd[15984]: error: PAM: authentication error for illegal user istvan from 200.75.72.185 Dec 10 12:20:14 gw sshd[16030]: Invalid user roto from 121.52.214.105 Dec 10 12:20:55 gw sshd[16058]: Invalid user thx1138 from 121.52.214.105 Dec 10 12:20:58 gw sshd[16060]: Invalid user 0123456789 from 121.52.214.105 Dec 10 12:21:02 gw sshd[16064]: Invalid user root123 from 121.52.214.105 Dec 10 12:21:06 gw sshd[16090]: Invalid user r00t from 121.52.214.105 Dec 10 12:21:13 gw sshd[16094]: Invalid user toor123 from 121.52.214.105 Dec 10 12:21:17 gw sshd[16096]: Invalid user t00r from 121.52.214.105 Dec 10 12:21:21 gw sshd[16100]: Invalid user acces from 121.52.214.105 Dec 10 12:21:24 gw sshd[16102]: Invalid user access from 121.52.214.105 Dec 10 12:21:28 gw sshd[16104]: Invalid user acc3ss from 121.52.214.105 Dec 10 12:21:32 gw sshd[16106]: Invalid user acc3s from 121.52.214.105 Dec 10 12:21:36 gw sshd[16110]: Invalid user acce$$ from 121.52.214.105 Dec 10 12:21:39 gw sshd[16112]: Invalid user acce55 from 121.52.214.105 Dec 10 12:21:43 gw sshd[16114]: Invalid user tomcat from 121.52.214.105 Dec 10 12:21:47 gw sshd[16116]: Invalid user tomcat1 from 121.52.214.105 С тестовыми данными у меня проблем нет, у меня со знаниями проблемы... Это после:
bunzip2 -kcf /var/log/auth.log.0.bz2 | cat - /var/log/auth.log | grep "Invalid user\|authentication error" > /tmp/block1.txt Никак не могу понять как записать в sed следующее: удалить начало строки до "user" (а лучше включая). sed 's/^ * user//g' нужного эффекта не дает. Тут главное понять механизм работы sed, чего у меня не получается...
- Освоение скриптописания под shell, Pahanivo, 08:13 , 11-Дек-09 (3)
- Освоение скриптописания под shell, Vadim_nsk, 09:23 , 11-Дек-09 (8)
>это все уже реализовано, если не ошибаюсь называется sshitСпасибо, нашел, установил. Можно сказать задача решена. Но подобных задач масса, надо научиться, поэтому sshit лишь добавил к "своей" борьбе. Будет на чем тренироваться...
- Освоение скриптописания под shell, ACCA, 08:41 , 11-Дек-09 (5)
- Освоение скриптописания под shell, phpcoder, 08:42 , 11-Дек-09 (6)
- Освоение скриптописания под shell, phpcoder, 08:47 , 11-Дек-09 (7)
- Освоение скриптописания под shell, ACCA, 08:31 , 11-Дек-09 (4)
- Освоение скриптописания под shell, L0n3R4ng3r, 12:08 , 11-Дек-09 (10)
|