Alex@work писал(а):Еще бы вывод в html (для визуализации результата) - было бы самое то.
Пожалуйста:
(правда пока этот скрипт немного сыроват, оптимизацию пока не делал)
Вид отчета в стиле SARG !!!
#!/bin/bash
rejik_log=$1
sarg_conf_dir="/usr/local/sarg"
sarg_out_dir=$2
tmp_dir="/tmp"
main_dir="/usr/local/sarg"
charset="Windows-1251"
##########################################
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"'> ... rejik.html
echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset='$charset'"></head><style>'>>$sarg_out_dir/rejik.html
cat $sarg_conf_dir/css.tpl >> $sarg_out_dir/rejik.html
echo '</style><body class="body"><center><table cellpadding="0" cellspacing="0">'>> $sarg_out_dir/rejik.html
echo '<tr><th align="center" class="title">Squid User Access Report</th></tr>'>> $sarg_out_dir/rejik.html
echo '<tr><td class="header3">BLOCKED Links</td></tr></table></center><br>'>> $sarg_out_dir/rejik.html
##########
rm $tmp_dir/tmp 2> /dev/null
mkdir $sarg_out_dir/rejik 2> /dev/null
cp -f $rejik_log $tmp_dir/rejik-tmp
test -f $main_dir/allow-ip &&for i in `cat $main_dir/allow-ip`; do `egrep -v "($i)" $tmp_dir/rejik-tmp >> $tmp_dir/tmp`; done&& mv -f $tmp_dir/tmp $tmp_dir/rejik-tmp
awk '{print $3}' $tmp_dir/rejik-tmp | sort -u | tr -d ':' >$tmp_dir/rejik-rule
echo '<center><table cellpadding="1" cellspacing="2"> <tr><th class="header">Rule</th><th class="header" >User number</th><th class="header" >Full number connect</th></tr>'>> $sarg_out_dir/rejik.html
for i in `cat $tmp_dir/rejik-rule`;
do
N1=`cat $tmp_dir/rejik-tmp |egrep $i | wc -l`
N2=`cat $tmp_dir/rejik-tmp |egrep $i |awk '{print $4}' | sort -u | wc -l`
echo '<tr><td class="data" align="center"><a href="rejik/'$i'.html"><font color="red"><b>'$i'</b></font></a></td><td class="data"><a href="rejik/'$i'.html"><b>'$N2'</b></a></td><td class="data"><a href="rejik/'$i'.html"><b>'$N1'</b></a></td></tr>'>> $sarg_out_dir/rejik.html
done
echo '</table></center><br>'>> $sarg_out_dir/rejik.html
for i in `cat $tmp_dir/rejik-rule`;
do
###########
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"'> ... ik/$i.html
echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset='$charset'"></head><style>'>>$sarg_out_dir/rejik/$i.html
cat $sarg_conf_dir/css.tpl >> $sarg_out_dir/rejik/$i.html
echo '</style><body class="body"><center><table cellpadding="0" cellspacing="0">'>> $sarg_out_dir/rejik/$i.html
echo '<tr><th align="center" class="title">Squid User Access Report</th></tr>'>> $sarg_out_dir/rejik/$i.html
echo '<tr><td class="header3">BLOCKED Links</td></tr>'>> $sarg_out_dir/rejik/$i.html
echo '<tr><td class="header3"><b><font color="red">Rule '$i'</font></b></td></tr></table></center><br>'>> $sarg_out_dir/rejik/$i.html
echo '<center><table cellpadding="1" cellspacing="2"> <tr><th class="header">User</th><th class="header" >Number connect</th></tr>'>> $sarg_out_dir/rejik/$i.html
`cat $tmp_dir/rejik-tmp |egrep $i > $tmp_dir/rejik-$i-tmp`
N1=`cat $tmp_dir/rejik-$i-tmp |wc -l`
cat $tmp_dir/rejik-$i-tmp | awk '{print $4}'| sort -u >$tmp_dir/rejik-$i-user
rm $tmp_dir/rejik-$i-user-sort
for k in `cat $tmp_dir/rejik-$i-user`;
do
echo `cat $tmp_dir/rejik-$i-tmp |egrep $k |wc -l`' '$k >> $tmp_dir/rejik-$i-user-sort
done
cat $tmp_dir/rejik-$i-user-sort | sort -nr | awk '{print $2}' > $tmp_dir/rejik-$i-user
for k in `cat $tmp_dir/rejik-$i-user`;
do
N2=`cat $tmp_dir/rejik-$i-tmp |egrep $k |wc -l`
echo '<tr><td class="data2"><a href="'$k'-'$i'.html">'$k'</a></td><td class="data2"><b>'$N2'</b></td></tr>'>> $sarg_out_dir/rejik/$i.html
###########
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"'> ... $k-$i.html
echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset='$charset'"></head><style>'>>$sarg_out_dir/rejik/$k-$i.html
cat $sarg_conf_dir/css.tpl >> $sarg_out_dir/rejik/$k-$i.html
echo '</style><body class="body"><center><table cellpadding="0" cellspacing="0">'>> $sarg_out_dir/rejik/$k-$i.html
echo '<tr><th align="center" class="title">Squid User Access Report</th></tr>'>> $sarg_out_dir/rejik/$k-$i.html
echo '<tr><td class="header3">BLOCKED Links</td></tr>'>> $sarg_out_dir/rejik/$k-$i.html
echo '<tr><td class="header3"><b><font color="red">Rule '$i'</font></b></td></tr>'>> $sarg_out_dir/rejik/$k-$i.html
echo '<tr><td class="header3"><b>User '$k'</b></td></tr></table></center><br>'>> $sarg_out_dir/rejik/$k-$i.html
echo '<center><table cellpadding="1" cellspacing="2"> <tr><th class="header">Date</th><th class="header" >Time</th><th class="header" >URL</th><th class="header" >urls/pcre</th></tr>'>> $sarg_out_dir/rejik/$k-$i.html
`cat $tmp_dir/rejik-$i-tmp |egrep $k | awk '{print "<tr><td class='data2'>",$1,"</td><td class='data2'>",$2,"</td><td class='data2' align='left'>",$6,"</td><td class='data2' align='left'>",$7,$9,"</td></tr>"}' >> $sarg_out_dir/rejik/$k-$i.html`
echo '</table></center><br>'>> $sarg_out_dir/rejik/$k-$i.html
done
echo '</table></center><br>'>> $sarg_out_dir/rejik/$i.html
done
Комментарии к самому скрипту:
sarg_conf_dir = из этой директории берется стиль оформления отчета
sarg_out_dir = директория отчета Sarg за период
main_dir = каталог данного скрипта.
charset = кодировка отчета Sarg
allow-ip адреса пользователей, исключаемых из контроля.
Комментарии по использованию скрипта:
в качестве первого параметра скрипту передается файл лога режика, а второй параметр - директория с уже готовым отчетом Sarg за тот же период.
Пример: rus.sh /usr/local/rejik3/redirector.log /usr/local/www/sarg/23Jan2006-29Jan2006
В директорию отчета записывается файл rejik.html и там же создается папка rejik.
Кто знает о существовании данного файла тот его запустит, можно также слегка модифицировать скрипт для добавления ссылки в index.html созданного sarg-ом
P.S. У меня есть скрипт который заменяет в отчете sarg ip пользователей на ФИО + подразделение. Если кому надо поделюсь.