检测服务器上哪些端口可用
萧墙
由于倒霉的运维防火墙策略,只有部分端口可用,然而不同IDC的端口可用范围还特么 不!一!样!所以写了两个bash函数来检查哪些端口可用……
红杏
check_avail_ports_server ()
{
for ((i=$2 ; i <= $3 ; i += $4)) ; do
bash -c "timeout 10 nc -l $i >> $1 & ";
done ;
}
check_avail_ports_client ()
{
for ((i=$2 ; i <= $3 ; i += $4)) ; do
bash -c "echo $i | nc $1 $i -G 1 &" ;
done;
}
姿势
把以上代码加入到bashrc里或者直接在bash中输入之。
被测端
在要被检测的服务器端运行:
check_avail_ports_server avail_ports 1000 65535 10
参数
output_file
: 将可用端口保存到文件,例如:avail_ports
start_port
: 起始端口号,例如:1000
end_port
: 结束端口号 ,例如:65535
port_interval
: 端口号间隔,每隔port_step
个端口做检查,例如:10
检测端
在发起检测的客户端运行:
check_avail_ports_client 10.123.12.1 1000 65535 10
参数
remote_ip
: ,例如:10.123.12.1
start_port
: 起始端口号,例如:1000
end_port
: 结束端口号 ,例如:65535
port_interval
: 端口号间隔,每隔port_step
个端口做检查,例如:10
步骤
- 被测端先启动
- 10 秒钟内启动检测端
- 待检测端脚本执行完毕,去被测端查看
output_file
注意
- 一定要在 10 秒钟内启动检测端,如果两端间 lag 比较高,可以修改脚本将 10 秒钟的 timeout 调大
port_interval
建议设置10
以上,过小可能会导致进程数过多而使bash hang 掉- 两端的参数除了第1个以外,剩余3个均应完全相同