Цикл скриптов: vsftpd-stats
Начну цикл скриптов которые были написаны на скорую руку, в отсутствии интернет, или от того что не посмотрел репозиторий на наличие готовых решений:
скрипт на подсчет статистики сервера ftp vsftpd
непмню точно н вроде он просто считает сумарный траффик и траффик по айпишникам...
BEGIN {
FS = " "
NF = 18
RS = "\n"
getline
ip[1]=$7
system("rm /var/tmp/sorted")
while (getline<ARGV[ARGC-1])
{
printf "%s %s\n" ,$7,$8 >> "/var/tmp/sorted"
}
close("/var/tmp/sorted")
close(ARGV[ARGC-1])
k=1
while (getline <"/var/tmp/sorted")
{
sorted[k]=$0
k=k+1
}
asort(sorted)
n=1
t=1
m=1
split(sorted[n],a)
ip[t]=a[1]
traff[t]=a[2]
while (n<=k+1)
{
split(sorted[n],a)
if ( a[1] == ip[t] )
{
traff[t]=traff[t]+a[2]
}
else
{
total= total+traff[t]
traff[t]=traff[t]/(1024^2)
printf "%s\t%.3f MiB\n", ip[t],traff[t]
t=t+1
ip[t]=a[1]
traff[t]=a[2]
}
n=n+1
}
total=total/(1024^3)
printf "Total: %.3f GiB\n",total
}
END {}
использовать приблизительно так:
gawk -f vsftp-st2.awk /var/log/vsftpd.log
где "vsftp-st2.awk" - файл где сохранен этот скрипт
FS = " "
NF = 18
RS = "\n"
getline
ip[1]=$7
system("rm /var/tmp/sorted")
while (getline<ARGV[ARGC-1])
{
printf "%s %s\n" ,$7,$8 >> "/var/tmp/sorted"
}
close("/var/tmp/sorted")
close(ARGV[ARGC-1])
k=1
while (getline <"/var/tmp/sorted")
{
sorted[k]=$0
k=k+1
}
asort(sorted)
n=1
t=1
m=1
split(sorted[n],a)
ip[t]=a[1]
traff[t]=a[2]
while (n<=k+1)
{
split(sorted[n],a)
if ( a[1] == ip[t] )
{
traff[t]=traff[t]+a[2]
}
else
{
total= total+traff[t]
traff[t]=traff[t]/(1024^2)
printf "%s\t%.3f MiB\n", ip[t],traff[t]
t=t+1
ip[t]=a[1]
traff[t]=a[2]
}
n=n+1
}
total=total/(1024^3)
printf "Total: %.3f GiB\n",total
}
END {}