赞
踩
一、测试方法:
1、方法 1 :在端口不通时超时时间较长
echo -e "\n"|telnet $CHECK_IP $CHECK_PORT|grep "Connected to\|Escape character" >/dev/null
检查 $? 获取结果
通过以上命令测试,如果端口开放则返回 0 ,否则为 1。
2、方法 2 :在端口不通时超时时间较长
echo ""|telnet $CHECK_IP $CHECK_PORT 2>/dev/null|grep "\^]"|wc -l
通过以上命令测试,如果端口开放则返回 1 ,否则为 0。
3、方法 3 :该方法最佳( 在设置的超时时间范围之内 )
echo quit|timeout --signal=9 {timout_second} telnet {host} {port} 2>/dev/null|grep "\^]"|wc -l
通过以上命令测试,如果端口开放则返回 1 ,否则为 0。
二、脚本示例:
1、脚本内容:
#!/bin/bash
check_telnet()
{
local lv_ip_and_port
local lv_ip
local lv_port
local lv_portFlag
for lv_ip_and_port in $(cat /tmp/ip_port_file.txt)
do
lv_ip=$(echo $lv_ip_and_port|awk -F: '{print $1}')
lv_port=$(echo $lv_ip_and_port|awk -F: '{print $2}')
lv_portFlag=`echo quit|timeout --signal=9 3 telnet $lv_ip $lv_port 2>/dev/null|grep "\^]"|wc -l`
if [ $lv_portFlag -eq 0 ];then
echo 1
exit
fi
done
echo 0
}
check_telnet > result.log
2、端口文件 ips_file 内容:
#请使用ip:port 或者 域名:port 的格式编辑以下内容;
#如果是一个列表,可以使用#对不进行测试的IP进行注释
192.168.197.10:11521
192.168.197.10:11522
192.168.197.100:11522
3、输出结果示例( 如果端口开放则返回 1 ,否则为 0 ):
### 端口开放
root@racdb1:/root>lv_portFlag=`echo quit|timeout --signal=9 3 telnet 192.168.197.10 11521 2>/dev/null|grep "\^]"|wc -l`
root@racdb1:/root>echo $lv_portFlag
1
root@racdb1:/root>
### 端口未开放
root@racdb1:/root>lv_portFlag=`echo quit|timeout --signal=9 3 telnet 192.168.197.10 11522 2>/dev/null|grep "\^]"|wc -l`
root@racdb1:/root>echo $lv_portFlag
0
root@racdb1:/root>
### IP 不可达
root@racdb1:/root>lv_portFlag=`echo quit|timeout --signal=9 3 telnet 192.168.197.100 11522 2>/dev/null|grep "\^]"|wc -l`
root@racdb1:/root>echo $lv_portFlag
0
root@racdb1:/root>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。