Чем посоветуете?
Сделал bash скриптик но че та все не так быстро как начальник ждет
Посоветуйте как его оптимизировать или может у кого были такие задачи и скрипты на другом языке. Или кто знает какой нить толковый лог анализатор?Скриптик:
#!/bin/bashc=1
#IP cycle
for a in `cat /weblogs/scripts/ip`; do
echo $a#internal Logs cycle
for b in `ls /weblogs/logs/cache1.prd/`; do
echo $a-----------------------------------$bzgrep "$a" /weblogs/logs/cache$c.prd/$b >> /weblogs/tmp/cache$c.prd/${a}-${b}.log
if [ ! -s /weblogs/tmp/cache$c.prd/${a}-${b}.log ]; then
rm -f /weblogs/tmp/cache$c.prd/${a}-${b}.log
echo "Empty file"
fidone
done
Спасибо
Решил немного оптимизировать - только не смейтесь :)
#!/bin/bashset +x
c=2
#internal Logs cycle
for b in `ls /weblogs/logs/cache2.prd/`; do
echo -----------------------------------$bzgrep "-E '1.197.174.131|1.197.174.247|24.187.239.58|27.189.35.33|41.34.142.120|41.35.176.113|41.35.180.236|41.178.213.218|41.178.239.102|41.235.14.155|46.176.10.51|58.17.18.158|58.20.66.225|58.52.121.138|59.159.139.148|59.164.10.160|60.0.85.160|60.0.87.35|60.4.53.124|61.48.196.244|61.48.197.246|64.184.179.70|66.239.64.109|84.16.226.127|84.19.169.163|84.19.169.232|88.227.83.203|88.253.253.28|89.145.108.203|89.149.244.67|89.178.151.23|92.48.74.75|92.113.213.135|93.80.22.134|93.182.146.47|94.181.251.91|95.24.10.244|95.24.36.141|95.25.30.53|95.26.170.235|95.26.233.87|95.27.110.39|95.143.40.43|95.220.133.22|106.187.47.231|109.120.144.247|109.120.156.253|110.240.91.227|113.57.231.18|113.57.231.24|113.65.125.83|113.108.91.91|113.111.44.102|113.167.120.129|114.237.128.8|115.49.32.166|115.49.35.203|115.49.61.111|115.49.63.48|115.49.89.25|115.49.91.25|115.49.91.210|115.49.96.66|115.49.96.132|115.52.188.5|115.52.189.57|115.52.190.177|115.52.216.192|115.52.222.197|115.52.224.73|115.52.224.201|115.52.240.57|115.52.240.112|115.52.241.199|115.59.75.159|117.41.164.133|118.122.178.65|118.249.144.224|118.250.180.13|118.250.213.48|119.147.21.44|120.1.37.99|121.29.4.227|121.72.172.185|122.50.232.197|122.61.34.47|123.4.34.45|123.4.41.18|123.4.42.144|123.4.43.68|123.4.48.230|123.4.50.87|123.4.51.147|123.4.52.197|123.4.53.129|123.4.57.100|123.4.58.15|123.4.59.176|123.11.15.250|123.11.17.157|123.11.22.73|123.11.22.255|123.11.49.218|123.11.64.37|123.11.67.85|123.11.67.222|123.11.68.155|123.11.92.162|123.11.143.188|123.11.148.176|123.11.163.101|123.11.167.127|123.11.178.82|123.11.178.143|123.11.183.68|123.11.183.135|123.11.185.156|123.11.242.244|123.11.255.248|123.53.70.163|123.53.71.21|123.53.71.25|123.53.71.78|123.53.73.150|123.53.76.62|123.53.78.25|123.53.80.232|123.53.90.62|123.53.90.88|123.53.90.121|123.53.91.207|123.53.96.146|123.53.98.147|123.53.100.24|123.53.106.20|123.53.106.28|123.53.116.26|123.53.116.40|123.53.123.30|123.53.123.66|123.53.123.187|123.161.65.193|123.161.79.68|123.161.79.74|123.161.79.184|123.161.80.84|123.161.80.136|123.161.80.212|123.161.80.230|123.161.80.249|123.161.81.21|123.161.81.31|123.161.81.130|123.161.81.210|123.161.82.22|123.161.83.77|123.161.84.34|123.161.111.248|124.82.164.233|124.228.83.14|124.238.129.183|125.45.96.58|125.45.97.182|125.45.98.27|125.45.104.164|125.45.104.208|125.45.104.222|125.45.105.4|125.45.105.5|125.45.105.124|125.45.105.211|125.45.106.40|125.45.106.92|125.45.122.130|125.45.122.148|125.45.123.11|125.45.123.52|125.89.75.100|128.164.100.205|172.158.12.82|172.158.18.251|172.158.57.232|173.208.222.250|182.114.200.115|182.114.203.49|182.114.231.94|197.0.169.158|201.213.240.228|213.152.176.93|213.229.77.70|218.76.45.158|219.154.152.171|219.154.155.36|219.154.155.185|219.154.187.51|219.154.189.14|220.162.118.90|221.7.40.162|222.88.225.125|222.88.225.216|222.88.234.61|222.88.237.11|222.88.237.216|222.88.237.254|222.139.199.61|222.142.179.57'" /weblogs/logs/cache$c.prd/$b >> /weblogs/tmp/cache$c.prd/${b}.log
if [ ! -s /weblogs/tmp/cache$c.prd/${b}.log ]; then
rm -f /weblogs/tmp/cache$c.prd/${b}.log
echo "Empty file"
fi
doneПервый раз запустил, он даж вроде нашел в лог файле один из адресов.
Прервал по ctrl+c и после этого скока не запускаб он стопорится на первом файле, если единожды нажать ctrl+c переходит ко второму файлу и стопорится на нем.Есть идеи?
Да, и в целом о задаче:
Нужно получить на выходе: Данные говорящие о том когда и с какого из этих 200 подозрительных IP заходили и в каком логе была найдена инфа.> Чем посоветуете?
> Сделал bash скриптик но че та все не так быстро как начальник
> ждет
> Посоветуйте как его оптимизировать или может у кого были такие задачи и
> скрипты на другом языке. Или кто знает какой нить толковый лог
> анализатор?
Тут всё решается единичным вызовом grep, поэтому никаких супероптимизаций не предвидится
for b in `ls /weblogs/logs/cache2.prd/ замените на for b in `/weblogs/logs/cache2.prd/*`
zgrep -E лучше заменить на zgrep -F чтобы он рассматривал каждый адрес не как регулярку, а как фиксированную строку
> Тут всё решается единичным вызовом grep, поэтому никаких супероптимизаций не предвидится
> for b in `ls /weblogs/logs/cache2.prd/ замените на for b in `/weblogs/logs/cache2.prd/*`
> zgrep -E лучше заменить на zgrep -F чтобы он рассматривал каждый адрес
> не как регулярку, а как фиксированнуюа если так?
grepres=`zgrep -f /weblogs/scripts/ip /weblogs/logs/cache$c.prd/$b`
if [ -n "$grepres" ]
then
echo $grepres > /weblogs/tmp/cache$c.prd/${b}.log
fi