使用shell对端口批量telnet以及超时等待的解决方案
需求说明:
有时候我们需要对端口进行探测,检查网络是否通。一般大家都知道可以通过telnet进行操作,但是当需要对多个端口进行批量探测的时候,如果手动一个个进行telnet会很影响效率,通过shell脚本我们可以对telnet进行批量操作,但是会面临一个问题。当存在端口不通的情况下,shell进行telnet会进行长时间的等待大概是127秒。显然在自动化脚本中存在这样的问题是不可接受的。争对以上问题,我专门对网上不靠谱的批量脚本进行了重写。
使用方式:
bash telnetTest.sh /app/telnet_file.txt
执行结果说明:
执行结果会保留在你脚本所在路径的result.log文件中。保存的内容为失败的记录。
具体实现代码:
#!/bin/bash telnet_file=${1} result_tmp_file="result_tmp.log" result_file="result.log" sed -i 's/^M//g' ${telnet_file} while read line do ip_port="$(echo ${line} | awk '{print $1}') $(echo ${line} | awk '{print $2}')" echo quit | timeout --signal=9 2 telnet ${ip_port} >> ${result_tmp_file} 2>&1 if [ `grep -c "Escape character is" result_tmp.log` -eq '0' ];then cat ${result_tmp_file} >> ${result_file} echo -e "---${ip_port}" >> ${result_file} fi echo > ${result_tmp_file} done < ${telnet_file}; rm -f ${result_tmp_file}
其他说明:
telnet_file.txt文件记录了需要批量telnet的地址端口,具体的书写格式为:
www.xyzbeta.com 443 220.181.38.251 443 1.1.1.1 8080 www.abc.com 9099
本文章只是auxt-shell项目中关于telnet功能的单独说明,了解和使用更多关于auxt-shell项目,你可以访问https://www.xyzbeta.com/81
本文系作者 @Mr.Lee 原创发布在 维简网。未经许可,禁止转载。