Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。下图是显示当前系统部分端口使用情况:
不同协议相同端口使用并不冲突;所以我们要只获得TCP或UDP协议的的端口情况:
上图是TCP端口使用情况,通过使用管道和 egrep 命令。在上图显示中可以看出端口显示在每行的第四列,那么先获得第四列:
观察上图端口的情况,都在每行的最后一个,当时每行的:个数又不相同,这次我们只能使用下面这个命令 echo ${var##*:} 来获得所有的端口,所有可以写个函数来获得
# is_valid_tcp_port $1
# return 0 表示不冲突,return 201 冲突
is_valid_tcp_port ()
{
for i in `netstat -lnp | egrep '^(tcp).*' | awk '{ print $4 }'`
do
local tmp=`echo ${i##*:}`
if [ "$1" = "$tmp" ]
then
return 201
fi
done
return 0
}
但是在使用时要注意了
if is_valid_tcp_port "$console_port"
then
.........1.........
else
...........2.....
fi
当return 0 时会 1 ;return 201时会 2;这个可以看下前面的SHELL函数的参数和返回值介绍,