Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: mrowcp в May 22, 2010, 21:26



Титла: bash script за проверка на файл
Публикувано от: mrowcp в May 22, 2010, 21:26
Здравейте,
някой да може да ми даде примерен скрипт който да прави следното:

cat file.log
May 20 07:08:44 shells sshd[23440]: Failed password for root from 222.73.163.21 port 55803 ssh2
May 20 07:08:52 shells sshd[23442]: Failed password for root from 222.73.163.21 port 56192 ssh2
May 20 10:01:10 shells sshd[23444]: Failed password for root from 222.73.163.21 port 50611 ssh2
May 20 10:01:15 shells sshd[23446]: Failed password for root from 222.73.163.21 port 50961 ssh2

Ако едно и също IP има повече от 3 реда записни в file.log, дами праща е-майл.Часта с мейла знам как да стане, но не мога да задам как да чете точно мястото с ИП-то.Може евентуално да чете всичко след "from" до "port" :)
Мерси


Титла: Re: bash script за проверка на файл
Публикувано от: b2l в May 22, 2010, 21:43
Защо не опиташ сам да си го напишеш. Само ще ти помогна да вземеш IT-то:
Код
GeSHi (Bash):
  1. awk  '{print $11}' test
къдте test беше моя файл с твоите редове информация.


Титла: Re: bash script за проверка на файл
Публикувано от: mrowcp в May 22, 2010, 22:28
Защо не опиташ сам да си го напишеш. Само ще ти помогна да вземеш IT-то:
Код
GeSHi (Bash):
  1. awk  '{print $11}' test
къдте test беше моя файл с твоите редове информация.

мерси :) вече имам няколко идеи.Ще пробвам и ще пиша ако има проблем.


Титла: Re: bash script за проверка на файл
Публикувано от: radoulov в May 22, 2010, 23:40
Код
GeSHi (Bash):
  1. awk '++_[$11] > 3 { exit 1 }' logfile ||
  2.  send_your_mail_here



Титла: Re: bash script за проверка на файл
Публикувано от: mrowcp в May 23, 2010, 15:00
Код
GeSHi (Bash):
  1. awk '++_[$11] > 3 { exit 1 }' logfile ||
  2.  send_your_mail_here

Мерси :) Определено напредвам.
Оказа се, че има доста начини да бъде направено едно и също нещо

Код
GeSHi (Bash):
  1. cut -d " " -f 11

пак показва само 11ти ред.


Титла: Re: bash script за проверка на файл
Публикувано от: mrowcp в May 23, 2010, 16:40
Нещо запецнах :)
Проблема е следния:

Код:
cat ip.log
May 20 07:08:52 shells sshd[23442]: Failed password for root from 222.73.163.21 port 56192 ssh2
May 20 07:08:52 shells sshd[23442]: Failed password for root from 192.168.50.1 port 56192 ssh2
May 20 07:08:52 shells sshd[23442]: Failed password for root from 192.168.50.1 port 56192 ssh2
May 20 07:08:52 shells sshd[23442]: Failed password for root from 192.168.100.9 port 56192 ssh2
May 20 07:08:52 shells sshd[23442]: Failed password for root from 192.168.100.9 port 56192 ssh2
May 20 07:08:52 shells sshd[23442]: Failed password for root from 192.192.192.192 port 56192 ssh2

Код:
cat ip.log |awk '++_[$11] > 1 { print $11 }'
192.168.50.1
192.168.100.9

до тук работи добре, но когато задам да е по-малък от 2ка ми връща всичките IP-та:

Код:
cat ip.log |awk '++_[$11] < 1 { print $11 }'

и

Код:
cat ip.log |awk '++_[$11] < 2 { print $11 }'
222.73.163.21
192.168.50.1
192.168.100.9
192.192.192.192

а тук би трябвало да се виждат само 222.73.163.21 и 192.192.192.192, защото за тях има само по един запис в ip.log-a.

P.S.

Код:
cat ip.log |awk '++_[$11] == 1 { print $11 }'
222.73.163.21
192.168.50.1
192.168.100.9
192.192.192.192

и така не става :(

ЕДИТ:
разбрах защо не работи.ама, че съм... кух :)