Время от времени возникает необходимость найти ip, открывший наибольшее количество соединений. Зачем это нужно? Например для того, чтобы "оценить" нагрузку или пресечь попытку DDOS'a.
Всю необходимую информацию можно получить при помощи netstat. Осталось только сгруппировать её по ip, что и делает скрипт.
#!/bin/sh
netstat -an | awk '{
gsub(/:/, ".");
split($0, Line, " ");
if (Line[1] == "tcp"){
j=split(Line[5], src, ".");
if (j == 5) {
srcIP = src[1] "." src[2] "." src[3] "." src[4];
Result[srcIP]++;
}
}
}
END {
sum = 0;
count = 0;
for (ip in Result) {
print Result[ip], ip | " sort -n";
sum = sum + Result[ip];
count++;
}
print "Total: ", sum, " from ", count, " ips";
}
'