1、端口检测
在Linux系统上测试端口是否通除了使用telnet外,还是可以使用nc命令,特别是在写维护脚本,由于telnet如果遇到端口不通,需要等待较长时间才能得到结果,而使用nc可以设置检测时长,同时可以一次性检测多个IP,可以大大提高检测的效率。
检测单个IP和端口示例:
#!/bin/bash ip=192.168.1.1 port=22 nc -z -w 5 $ip $port > /dev/null 2>&1 ###-z表示只扫描端口,不发送数据,可以快速得到检测结果。-w表示检测时长现在,后面跟时长5秒,超过改值就认为不通。 if [ $? -eq 0 ] then echo telnet $ip $port ok sleep 1 else echo telnet $ip $port fail >&2 fi exit 0
检测多个IP和端口示例:
#!/bin/bash address=(192.168.1.1 192.168.1.2 192.168.1.3) ###使用列表方式传递IP port=(22 80 443) for ip in ${address[*]} do for pr in ${port[*]} do nc -z -w 5 $ip $pr > /dev/null 2>&1 if [ $? -eq 0 ] then echo telnet $ip $pr ok else echo telnet $ip $pr fail >&2 fi done done exit 0
如果IP很多,将IP信息放置在文本里,脚本从文本中读取
#!/bin/bash port=22 cat ip.txt|while read line ###IP存放在同级目录下的ip.txt,按行放置IP do nc -z -w 5 $line $port > /dev/null 2>&1 if [ $? -eq 0 ] then echo telnet $line $port ok sleep 1 else echo telnet $line $port fail >&2 fi done exit 0
注:nc还可以直接在同一条命令行里写多个IP和端口进行检测,用法我没记住⊙﹏⊙b汗
2、临时启用端口
nc -l 8888 ####启用TCP端口,可以直接telnet通 在其他主机上使用nc测试 nc -v -w 1 192.168.1.1 -z 8888 结果 Connection to 192.168.1.1 8888 port [tcp/ddi-udp-1] succeeded! nc -l -u 8888 ####启用UDP端口,无法telnet通,可以使用nc检测。-u表示使用UDP协议 nc -v -w 1 192.168.1.1 -u -z 8888 结果 Connection to 192.168.1.1 8888 port [udp/ddi-udp-1] succeeded!
转载于:https://blog.51cto.com/tryagaintry/1957969