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

Linux секция за начинаещи => Настройка на програми => Темата е започната от: empty в Aug 23, 2007, 03:06



Титла: Bash скрипт
Публикувано от: empty в Aug 23, 2007, 03:06
Трябва ми просто скриптче което да се сложи в crontab примерно и да следи за failed connection attempts в /var/log/messages и ако има повече от 10 опита да адва правило в iptables което да блоква IP-то пробващо да пробие в машината. Правилото да речем, че се записва в /etc/sysconfig/iptables и после се рестартират iptables посредством service iptables restart.
Става въпрос за Fedora Core.

Благодаря предварително.


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 03:51
http://linux-bg.org/cgi-bin....5185851
http://denyhosts.sourceforge.net/
http://linux-bg.org/cgi-bin....4186810

Виж и коментарите.

Иначе:


Примерен код
#!/bin/bash

for ip in `cat /var/log/messages | grep "failed connection" | awk '{print $11}' | sort -u`; do

        acount=`cat /var/log/messages | grep "failed connection" | grep " $ip" | wc -l`

        if [ "$acount" -gt "10" ];
        then
                `iptables -D INPUT -s $ip -j DROP 2>&1 > /dev/null`
                `iptables -I INPUT -s $ip -j DROP`
        fi

done






Титла: Bash скрипт
Публикувано от: empty в Aug 23, 2007, 03:51
Мерси!





Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 03:52
Ти си го пооправи ;)
Примерно може да не е 11-тата "дума" ИП-то ...





Титла: Bash скрипт
Публикувано от: sdr в Aug 23, 2007, 12:10
Примерен код
cat /var/log/messages | grep "failed connection" | awk '{print $11}'


Който го е писал това не е бил уред с главата! То вярно, че се изпълнява веднъж на високосна ама все пак е по-добре да се помисли малко преди да се пише
Примерен код
cat|grep
си е малоумие при положение че може да се мине само с grep а да се прави
Примерен код
cat|grep|awk
 при положение, че може да се мине само с awk ... срам, срам и позор!


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 14:04
Цитат (sdr @ Авг. 23 2007,12:10)
Примерен код
cat /var/log/messages | grep "failed connection" | awk '{print $11}'


Който го е писал това не е бил уред с главата! То вярно, че се изпълнява веднъж на високосна ама все пак е по-добре да се помисли малко преди да се пише
Примерен код
cat|grep
си е малоумие при положение че може да се мине само с grep а да се прави
Примерен код
cat|grep|awk
 при положение, че може да се мине само с awk ... срам, срам и позор!

Я, по-спокойно! Ходи, бегай, пуши една цигара ...
К'вото си искам това си пиша ...


Титла: Bash скрипт
Публикувано от: syman в Aug 23, 2007, 14:58
cat|grep|awk боже боже колко ламерштина има
трябваше да е cat|grep|awk|sed
я бързо записвай курсове за bash че с това ниво до никъде,
помеждудругото проблема с големия лог от опити за бруте форсе се оправя само със смяна на порта


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 14:59
Цитат (syman @ Авг. 23 2007,14:58)
cat|grep|awk боже боже колко ламерштина има
трябваше да е cat|grep|awk|sed
я бързо записвай курсове за bash че с това ниво до никъде,
помеждудругото проблема с големия лог от опити за бруте форсе се оправя само със смяна на порта

До-о-о-бре!


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 23, 2007, 15:14
Ако е по-прегледно , защо да не се напише един cat в повече ? (примерно)

не винаги НАЙ-ЛЕСНИЯТ начин е НАЙ-БЪРЗИЯТ !

как да е ... по работа

as_moderator: Всеки има право на мнение, независимо дали е правилно или не. А може и всеки да си е прав за себе си ! Така че ... по-спокойно с определенията "от Великите към Непросветените"

Изказвайте мнения, никой не Ви кара да се съгласявате с другият. !

Точка ... без обиди ... и най-вече да се правите на всезнаещи @syman си е не детска работа ,а пубертетска (в лошият смисъл)!


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 15:21
Съгласен съм с някои от критиките - тона не ми хареса ...
Кодът го писaх в "debug" режим в 4:00am ... който иска по-добър - да пише код, а не да се самовъзхвалява.





Титла: Bash скрипт
Публикувано от: Mitaka в Aug 23, 2007, 15:55
apt-get install fail2ban
 

или ако не използваш дебиан базирана дистрибуция - просто си намери сорс/пакет на fail2ban за твоята.


Титла: Bash скрипт
Публикувано от: Gaara в Aug 23, 2007, 16:35
Еми аз може и да съм малко лайк, но скрипта на VladSun ми хареса, както и всичките му постове :D
Та:
1. Лога в CentOS е
Примерен код

Aug 23 14:37:26 c sshd(pam_unix)[5006]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.191.2.36  user=root

т.е. IP-то е 13 колона и трябва да се използва sed. Нещо от сорта на:
Примерен код

.......
for ip in `awk '/authentication failure/ {print $13}' /var/log/messages |sed 's/[a-z]*=//'|sort -u`; do
.......

и нататък би трябвало да е същото :)

sdr, като си толкова могъщ на думи, покажи ни и на практика колко си добър.


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 23, 2007, 16:51
Наистаина за да няма повече заяжданя по темата ще припомня:

"който иска по-добър - да пише код, а не да се самовъзхвалява. "

:-)

Има една японска поговорка:

Дървото се познава по плодовете ;-)

не казано че всички могат да видят плодовете, но ако ги има, то би трябвало да може да се видят :-)

Успех на всички.

пп: имаше една простичка програмка , която преди 2г преправих на C по молба, не помня колко добре се справих а и беше нещо малко, но като първи крачки тогава бееш добре
та ето я темата http://www.linux-bg.org/cgi-bin....antilam

аа сега виждам .. мда ... във форума не може да се прикачват файлове та му я пратих по mail/icq ... мхм , е ако някой има интерес ще сложа линк по-късно, но не очаквайте кой знае какво беше просто програмка

откриваше опит за връзка и правеше рег. в syslog level кой беше не помня точно ;-) т.е като кой тип съобщение го бях вкарал :)


edit:
ок , намерих предпоследната версия, но не и последната, която правих

+ това съм го правил 2004, първи стъпки в системното проргамиране

+ бил съм доста ентусиязиран още го помня, ето какви глупости съм писал даже в началото на сорс кода

 © dgt_it@abv.bg

!!!!!! This software IS UNDER GPL !!!!!!

© за copyright , което е пълна глупост, просто исках да си дам maila- и после GPL ... ... как да е ... ентусиязма ми е бил малко в повече :)

+ има ДВЕ,три грешки с английският в коментарите, но ...  :-)

едит: забравих линка

http://dani11.hit.bg/antilame-002g.c

пп: и това нещо работи :-D :crazy: хаха :) Не добре е, но определено има какво да се оправи :) и най-вече в коментарите хаха :-)





Титла: Bash скрипт
Публикувано от: Йордан в Aug 23, 2007, 17:19
ГОЛЯМ ОФТОПИК!

Много се нервя на "компетентни" мнения!

@sdr, като си голям специялист вместо да плюеш защо не даде твой вариант на скрипта? Написал си цели 6 реда, а можеше с твойте способности да напишеш скрипта н един ред!


Титла: Bash скрипт
Публикувано от: sdr в Aug 23, 2007, 17:28
Не мислех да поствам след като казах каквото иках да кажа но понеже се понатрупаха въпроси към мен:

@Gaara
Цитат
sdr, като си толкова могъщ на думи, покажи ни и на практика колко си добър.


Колко си готов да платиш?

@GigaVolt
Цитат
@sdr, като си голям специялист вместо да плюеш защо не даде твой вариант на скрипта? Написал си цели 6 реда, а можеше с твойте способности да напишеш скрипта н един ред!

Щото има тонове готови такива скриптове.

Хубавото в цялата тая работа е, че успях да предизвикам дискусия и има надежда следващите ви скриптове да са по-иконимични


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 23, 2007, 18:12
1. "колко ще платиш"

реалист ?

2. "да са по икономични"

оптимист ?

--

все пак прав си че се получи дискусия, хвала  :) Но не знам дал иначина е като се заяжда човек :-P





Титла: Bash скрипт
Публикувано от: romeo_ninov в Aug 23, 2007, 19:01
Цитат (sdr @ Авг. 23 2007,18:28)
Не мислех да поствам след като казах каквото иках да кажа но понеже се понатрупаха въпроси към мен:

@Gaara
Цитат
sdr, като си толкова могъщ на думи, покажи ни и на практика колко си добър.


Колко си готов да платиш?

@GigaVolt
Цитат
@sdr, като си голям специялист вместо да плюеш защо не даде твой вариант на скрипта? Написал си цели 6 реда, а можеше с твойте способности да напишеш скрипта н един ред!

Щото има тонове готови такива скриптове.

Хубавото в цялата тая работа е, че успях да предизвикам дискусия и има надежда следващите ви скриптове да са по-иконимични

@sdr

В програмирането (най-общо) има правило че не е лошо програмата да бъде четима освен за компилатора/интерпретатора/траслатора и за автора/редактора/дебъгващия. Да, и аз съм чел няколко книги за писане на скриптове и мога да намеря сигурно десетки примери за "практически" безсмислено използване на програмата cat. Но много често за човешкия мозък е по-лесно да "види" така нещата, да ги прочете и разбере. Освен това скоростите на съвременните процесори са толкова големи че забавяне от 0.1% или даже 5% е несъществено в общия случай. И //офтопик не е лошо да е научиш да коментираш културно работата на другите. Все пак тук сме се "събрали" да дискутираме и помагаме, а не да се обиждаме (надявам се)





Титла: Bash скрипт
Публикувано от: sdr в Aug 23, 2007, 21:01
@romeo_ninov: Ще го имам предвид. Особено когато става въпрос за 3 ПРОЦЕСА вместо един и цялото усилие за комуникация между тях. Ако на някой не му е ясен единствения ред с awk ,който заметва реда подвърпрос, огромния пайп който пак завършва на awk няма да му стане по-ясен. Нямам протиw всеки да си пише както иска по неговите машини, въпроса е да не се разпространяват "лоши практики" сред младежта. По логиката "скоростите на съвременните процесори са толкова големи" всички трябва да седнем да пишем всичко на bash смесен с VBasic под wine!


Титла: Bash скрипт
Публикувано от: Йордан в Aug 23, 2007, 21:02
Цитат (sdr @ Авг. 23 2007,17:28)
Хубавото в цялата тая работа е, че успях да предизвикам дискусия и има надежда следващите ви скриптове да са по-иконимични

Не забелязах някой да дискутира оптимизиране на код.!
Май народа дискотира ТЕБ!


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 23, 2007, 21:12
Цитат (sdr @ Авг. 23 2007,22:01)
@romeo_ninov: Ще го имам предвид. Особено когато става въпрос за 3 ПРОЦЕСА вместо един и цялото усилие за комуникация между тях. Ако на някой не му е ясен единствения ред с awk ,който заметва реда подвърпрос, огромния пайп който пак завършва на awk няма да му стане по-ясен. Нямам протиw всеки да си пише както иска по неговите машини, въпроса е да не се разпространяват "лоши практики" сред младежта. По логиката "скоростите на съвременните процесори са толкова големи" всички трябва да седнем да пишем всичко на bash смесен с VBasic под wine!

Не бе човек ... човекът(romeo_ninov) ти казва , че прегледност за програмист е по-добре от колкото краткият път ПОНЯКОГА !!!

Примерен код

същото като .........вместо

if(!mem_pointer) и if(mem_pointer == NULL);-)

и т.н.


горният пример е елементарен, но в такиа случеи се печели

1. че се разбира по-лесно идеята -> защо така е направено
2. че се намират по-лесно пролемите
и 3. че ако някой реши да променя е в пъти по-лесно :) и гъвкаво за това става дума

то и аз го казах по-горе

Цитат (trm @ ,)

Ако е по-прегледно , защо да не се напише един cat в повече ? (примерно)

не винаги НАЙ-ЛЕСНИЯТ начин е НАЙ-БЪРЗИЯТ !







Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 21:26
Това чак аз не го вярвам ;)

Примерен код

root@levski:~# cat pp*
#!/bin/bash

for ip in `cat /var/log/messages | grep Accepted | awk '{print $11}' | sort -u`; do
        echo OK
done

#!/bin/bash

for ip in `awk '/Accepted/ {print $11}' /var/log/messages | sort -u`; do
        echo OK
done

root@levski:~# time ./pp.sh
OK
OK
OK

real    0m0.051s
user    0m0.004s
sys     0m0.044s


root@levski:~# time ./pp2.sh
OK
OK
OK

real    0m0.218s
user    0m0.164s
sys     0m0.056s


PS: pp2.sh е втората част от изхода на cat .
PPS: Повторих опитите няколко пъти - резултата е качествено подобен.
PPPS:

Примерен код
root@levski:~# wc -l /var/log/messages
 166097 /var/log/messages






Титла: Bash скрипт
Публикувано от: sdr в Aug 23, 2007, 21:32
Ми нека коментираме скорости тогава

Примерен код
sdr@sdr ~ $ cat test1.sh
#!/bin/bash
cat /var/log/everything/current | grep "cron" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test1.sh

real    0m0.086s
user    0m0.048s
sys     0m0.008s
sdr@sdr ~ $ cat test2.sh
#!/bin/bash
awk '/cron/{print $11}' /var/log/everything/current >/dev/null
sdr@sdr ~ $ time ./test2.sh

real    0m0.008s
user    0m0.008s
sys     0m0.000s
sdr@sdr ~ $ cat test3.sh
#!/bin/bash
cat /var/log/everything/current | egrep "cron" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test3.sh

real    0m0.081s
user    0m0.048s
sys     0m0.004s
sdr@sdr ~ $                


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 21:35
1:1 друго не мога да кажа ...
Освен:

Цитат

root@levski:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel® Pentium® 4 CPU 3.20GHz
stepping        : 9
cpu MHz         : 3200.866
cache size      : 1024 KB
bogomips        : 6410.12

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel® Pentium® 4 CPU 3.20GHz
stepping        : 9
cpu MHz         : 3200.866
cache size      : 1024 KB
bogomips        : 6400.72

root@levski:~# free
             total       used       free     shared    buffers     cached
Mem:        905324     859820      45504          0     215252     427280
-/+ buffers/cache:     217288     688036
Swap:       520684          0     520684



Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 21:38
Примерен код

root@levski:~# cat pp3.sh
#!/bin/bash

for ip in `grep Accepted /var/log/messages | awk '{print $11}' | sort -u`; do
        echo OK
done

root@levski:~# time ./pp3.sh
OK
OK
OK

real    0m0.030s
user    0m0.012s
sys     0m0.020s
root@levski:~#


Едит: Това е най-доброто време при мен ...





Титла: Bash скрипт
Публикувано от: tarator в Aug 23, 2007, 21:45
Аз също винаги пиша cat | grep в скриптове. IMNSHO така е по-прегледно.

Awk не използвам. Както казва Роб Пайк, "If you think awk is the perfect programming language for the problem, you don't understand the problem yet."


Титла: Bash скрипт
Публикувано от: sdr в Aug 23, 2007, 21:51
Ха ха ха! Посипвам си главата с пепел!
Наистина използването на три процеса е даже и по-бързо!
Примерен код

sdr@sdr ~ $ wc -l test.log
166097 test.log
sdr@sdr ~ $ grep 'Apache configured'  test.log  | wc -l
65
sdr@sdr ~ $ cat test1.sh
#!/bin/bash
cat test.log | grep "Apache configured" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test1.sh

real    0m2.435s
user    0m2.280s
sys     0m0.132s
sdr@sdr ~ $ cat test2.sh
#!/bin/bash
awk '/Apache configured/{print $11}' test.log >/dev/null
sdr@sdr ~ $ time ./test2.sh

real    0m2.564s
user    0m2.492s
sys     0m0.052s
sdr@sdr ~ $ cat test3.sh
#!/bin/bash
cat test.log | egrep "Apache configured" | awk '{print $11}' > /dev/null
sdr@sdr ~ $ time ./test3.sh

real    0m2.244s
user    0m2.112s
sys     0m0.112s
sdr@sdr ~ $ time ./test1.sh; time ./test2.sh; time ./test3.sh

real    0m2.251s
user    0m2.164s
sys     0m0.064s

real    0m2.578s
user    0m2.472s
sys     0m0.080s

real    0m2.315s
user    0m2.216s
sys     0m0.080s
sdr@sdr ~ $ time ./test1.sh; time ./test2.sh; time ./test3.sh

real    0m2.426s
user    0m2.312s
sys     0m0.096s

real    0m2.585s
user    0m2.508s
sys     0m0.056s

real    0m2.248s
user    0m2.124s
sys     0m0.104s
sdr@sdr ~ $ time ./test1.sh; time ./test2.sh; time ./test3.sh

real    0m2.248s
user    0m2.136s
sys     0m0.092s

real    0m2.582s
user    0m2.492s
sys     0m0.068s

real    0m2.261s
user    0m2.156s
sys     0m0.088s
sdr@sdr ~ $ time ./test3.sh; time ./test2.sh; time ./test1.sh

real    0m2.250s
user    0m2.112s
sys     0m0.112s

real    0m2.588s
user    0m2.512s
sys     0m0.060s

real    0m2.240s
user    0m2.116s
sys     0m0.108s
sdr@sdr ~ $ time ./test2.sh; time ./test3.sh; time ./test1.sh

real    0m2.610s
user    0m2.524s
sys     0m0.072s

real    0m2.253s
user    0m2.148s
sys     0m0.092s

real    0m2.367s
user    0m2.268s
sys     0m0.088s
sdr@sdr ~ $  


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 21:53
хех, още няколко машини ...

Примерен код

root@mail:/# time ./pp.sh
OK
OK
OK

real    0m1.009s
user    0m0.012s
sys     0m0.020s
root@mail:/# time ./pp2.sh
OK
OK
OK

real    0m0.153s
user    0m0.052s
sys     0m0.016s



root@relef:/# time ./pp.sh
OK

real    0m0.509s
user    0m0.024s
sys     0m0.100s
root@relef:/# time ./pp2.sh
OK

real    0m0.436s
user    0m0.212s
sys     0m0.200s
root@relef:/#


root@router:~# time ./pp.sh
OK

real    0m0.047s
user    0m0.020s
sys     0m0.028s
root@router:~# time ./pp2.sh
OK

real    0m0.044s
user    0m0.020s
sys     0m0.024s



Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 21:55
Има смисъл - никога не правим:

Примерен код

grep -v "unwanted" file.txt > file.txt


Според мен това е причината ...


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 23, 2007, 21:57
Истината се открива в спора, _но само когато спора е качествен _и се прави от хора, _които търсят _истината :)

качествена тема се получи след всичко , оказва се че освен прегледно , прегледното се оказва и по-добро от към бързодействие, значи се получава с един коршум - два заека , супер :) (2в1)

 :ok:


Титла: Bash скрипт
Публикувано от: sdr в Aug 23, 2007, 21:59
Цитат (VladSun @ Авг. 23 2007,21:38)
Примерен код

root@levski:~# cat pp3.sh
#!/bin/bash

for ip in `grep Accepted /var/log/messages | awk '{print $11}' | sort -u`; do
        echo OK
done

root@levski:~# time ./pp3.sh
OK
OK
OK

real    0m0.030s
user    0m0.012s
sys     0m0.020s
root@levski:~#


Едит: Това е най-доброто време при мен ...

най добре замени awk-a  с cut -f11 -d" " аз така постигнах най-добро време но все пак не бих държал подобен код на моя машина ;)


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 23, 2007, 23:24
Имам предположение защо при по-малко програми работи по-бързо като цяло

Защото при една програма примерно

awk има повече аргументи да parse-ва ;) :) Все пак обработката на низове е една от най-бавните да не кажем най...

като цяло тази обраобтка, която прави преобръщане м/у човешки разбираем код и компютърен код

нищо че гледа само ASCII или utf-8 таблица или каквото и да е parse-ването на опции и изваждането и , разбирането им кое какво да ползва изисква доста време ;)  Даже най-много от тези действия, който взима решение :)

if(!strcmp("k",str); е впъти по -.. от
if(var == true/false) примерно

и ок, има в Unix/linux системите функции за parse-ване , но те са просто оптимизирани в това в крайна сметка пак опираме до str функции, а те са от едни най-бавните

навързани 2,3 ,4 програми с по един аргумент със сигурност ще е по бързо
от 1 пр

с 4 аргумент (3 основни и един пояснителен, който е дълъг низ ;) ):)

Това е идея, не казвам че съм прав,но да кажем че съм доста убеден че е така :) :p :)


Титла: Bash скрипт
Публикувано от: VladSun в Aug 23, 2007, 23:41
Според мен е защото 1) се пускат няколко процеса едновременно, като 2) обработката на информацията става поточно, а не поетапно.





Титла: Bash скрипт
Публикувано от: gat3way в Aug 24, 2007, 00:01
Защото през тъпият awk минава къде по-малко data е според мен :) Едно е да викаш awk за целият лог файл, друго е да го викаш за някаква извадка, направена с grep. Между другото, grep работи в пъти по-бързо от awk :)


Титла: Bash скрипт
Публикувано от: VladSun в Aug 24, 2007, 01:43
Да, ама никой не видя бъгчето в скрипта ми, нали? ;)
 :p  :p  :p

Още не е оправено - чакам критика :)


Титла: Bash скрипт
Публикувано от: empty в Aug 24, 2007, 11:31
С извинение ще кажа "Бах мама му!". Абе хора вие не сте наред. Аз помолих за един скрипт а вие ще се избиете :) Всъщност и аз съм запознат до някъде със bash скриптирането, но не достатъчно. Поисках просто да се напише от някой който е по в час от мен пък аз си я тунинговах и си я направих за моите нужди така да се каже.
Искам да изкажа много благодарности на VladSun за скриптчето което спретна!
Искам да изкажа и благодарности на the_real_maniac :) Едно времи когато не бях много в час с нат-а ми направи едно скриптче за вдигане на TTL-a :) Благодаря ви!
За хора които си чешат просто езиците ... това не е мястото, нито начина. Ако можете да подобрите нещо го направете, а не си мерете пишките докато са меки :).

Всичко най най!!!





Титла: Bash скрипт
Публикувано от: romeo_ninov в Aug 24, 2007, 13:51
Цитат (empty @ Авг. 24 2007,12:31)
За хора които си чешат просто езиците ... това не е мястото, нито начина. Ако можете да подобрите нещо го направете, а не си мерете пишките докато са меки :).

Всичко най най!!!

Въпроса, който се повдигна е доста принципен и опира до стила на програмиране. Така че (лично) се надявам спора да не е излишен. За 10 реда скрипт въпроса не стои, но си представи че става въпрос за няколко хиляди реда


Титла: Bash скрипт
Публикувано от: VladSun в Aug 24, 2007, 14:09
Цитат (VladSun @ Авг. 24 2007,01:43)
Да, ама никой не видя бъгчето в скрипта ми, нали? ;)
 :p  :p  :p

Още не е оправено - чакам критика :)

Освен очевадната грешка за ползване на `` около iptables командите :) (тоя Perl ...)


Титла: Bash скрипт
Публикувано от: sdr в Aug 24, 2007, 14:34
И аз си обеснявам бавната работа на awk с огромната инфраструктура която е необходима за поддръжка на множестжо различни екшъна с множество различни патърни с разни релации между тях към един екшън. Предполагам, че ако се направи пач който да елеминира излишния за анализ на входния поток когато данните няма да се зиползват обработката в този толкова прост случай от гледна точка на възможностите на awk би се подобрила значително.


Титла: Bash скрипт
Публикувано от: the_real_maniac в Aug 24, 2007, 15:18
Значи пак говори за arguments parse и НАЙ-ВЕЧЕ разбирането :) не само отделянето и разпределянето като типове ,

основен аргумент - подаргумент

-dir /path/to

и т.н :)


Титла: Bash скрипт
Публикувано от: VladSun в Aug 25, 2007, 00:31
Ех ... никой не поиска да се включи ...
Правилният код е:
Примерен код

#!/bin/bash

for ip in `cat /var/log/messages | grep "failed connection" | awk '{print $11}' | sort -u`; do

       acount=`cat /var/log/messages | grep "failed connection" | grep " $ip " | wc -l`

       if [ "$acount" -gt "10" ];
       then
               iptables -D INPUT -s $ip -j DROP 2>&1 > /dev/null
               iptables -I INPUT -s $ip -j DROP
       fi

done


разликаата е в grep " $ip "