Есть скрипт для подсчета колличества активных соединений по некоторым
портам(сокетам) написаный под bash(не мной, но... времени нет), но почему-то
ничерта не работает, показывает одни нули.
Система FreeBSD 5.2.1, Bash3.
Вот сам скрипт:
#!/bin/bash
ARGLENGTH=`echo $* | wc -c | awk '{print $1}'`
if [ `echo $ARGLENGTH` -eq 1 ]; then
SOCKETLIST=`echo "20 21 22 23 25 80 443 8080"`
else
SOCKETLIST=`echo $*`
fi
NETSTATOUTPUT=`netstat -an | grep -v unix | awk '{print $4}' | awk -F: '{print $2}'`
RESULTSTRING=""
for socket in `echo $SOCKETLIST`; do
counter=0
for i in `echo -e $NETSTATOUTPUT`; do
if [ $i -eq $socket ]; then
counter=`expr $counter + 1`
fi
done
RESULTSTRING=`echo -n $RESULTSTRING"unix_socket_"$socket":"$counter" "`
done
echo -n $RESULTSTRING
А вот формат в котором выдает информацию netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.??.??.51624 192.168.??.??.1080 ESTABLISHED
tcp4 0 0 192.168.??.??.1080 192.168.??.??.1183 TIME_WAIT
[skip]
tcp4 0 0 192.168.??.??.80 192.168.??.??.51621 TIME_WAIT
tcp4 0 0 192.168.??.??.51060 192.168.??.??.1080 ESTABLISHED
tcp4 0 0 *.21 *.* LISTEN
tcp4 0 0 *.8080 *.* LISTEN
tcp4 0 0 *.1080 *.* LISTEN
tcp4 0 0 *.80 *.* LISTEN
tcp4 0 0 127.0.0.1.49160 127.0.0.1.49161 ESTABLISHED
tcp4 0 0 127.0.0.1.53 *.* LISTEN
tcp4 0 0 192.168.??.??.53 *.* LISTEN
Active UNIX domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
c6c62dac stream 0 0 c6c96514 0 0 0 /tmp/mysql.sock
c6c68000 stream 0 0 c6c71514 0 0 0 /var/run/ndc
c6c63460 dgram 0 0 0 c6c63000 0 c6c63b7c
c6c63b7c dgram 0 0 0 c6c63000 0 c6c63d20
c6c63d20 dgram 0 0 0 c6c63000 0 c6c62e38
c6c62e38 dgram 0 0 0 c6c63000 0 c6c63e38
c6c63e38 dgram 0 0 0 c6c63000 0 c6c68118
c6c68118 dgram 0 0 0 c6c63000 0 0
c6c63000 dgram 0 0 c6c34924 0 c6c63460 0 /var/run/log
Помогите пожалуйста, подскажите где, что и как подправить.
Заранее спасибо.