BASH SHELL下两个用于检查端口情况的脚本
2016-04-27 16:18
471 查看
这几天需要做Linux的TCP端口检查脚本,发现netstat、nc命令虽好,但不够直观,而且端口多了检查起来有点麻烦,动手学做了两个脚本。一个是用参数形式检查端口情况,另一个使用配置文件扫描端口。记录下来方便以后使用。
一、nc_check.sh
使用前在当前目录下建立一个check_port的文件,内容为:
所有TCP检测端口按照每行一个记录到文件内。执行效果:
二、netstat_check.sh
使用时直接在脚本后添加端口号作为参数,若扫描多个端口号,则每个端口号以空格隔开。若其中一个参数非数字,则程序终止。执行效果:
一、nc_check.sh
#!/bin/bash cat ./check_port|while read line do nc -z `uname -n` $line >/dev/null 2>&1 if [ $? -eq 0 ];then echo "$line OK." else echo "$line Failed." fi done
使用前在当前目录下建立一个check_port的文件,内容为:
cat check_port 123 345 456
所有TCP检测端口按照每行一个记录到文件内。执行效果:
[root@ABC ~]#. nc_check 123 OK 345 OK 456 Failed程序把列表内所有端口检查一遍,成功的OK,失败的Failed
二、netstat_check.sh
#!/bin/bash declare -a CHK_TCP_CMD=`netstat -tln|egrep 0.0.0.0|awk '{print $4}'|awk -F: '{print $2}'|sort -n` declare -a PORT_NO_EXISTS declare -i CURRENT_PORT=0 for TCP_PORT in $@ do #IS NUMBER expr "$TCP_PORT" + 0 >/dev/null 2>&1 if [ "$?" != "0" ];then echo "$TCP_PORT not a number." exit 1 fi PORT_NO_EXISTS[$CURRENT_PORT]=$TCP_PORT for LSN_PORT in $CHK_TCP_CMD do if [ $TCP_PORT == $LSN_PORT ];then unset PORT_NO_EXISTS[$CURRENT_PORT] break fi done ((CURRENT_PORT++)) done if [ ${#PORT_NO_EXISTS[@]} -gt 0 ];then echo "TCP ports ${PORT_NO_EXISTS[@]} failed." exit 1 fi exit 0
使用时直接在脚本后添加端口号作为参数,若扫描多个端口号,则每个端口号以空格隔开。若其中一个参数非数字,则程序终止。执行效果:
[root@ABC ~]#./netstat_check.sh 789扫描到的端口无输出。
[root@ABC ~]#./netstat_check.sh 123 456 789 TCP port 123 456 failed.程序把所有失败的端口罗列出来。
[root@ABC ~]#./netstat_check.sh 123 hello 456 hello not a number.不是数字的程序输出错误。
相关文章推荐
- 一波实用的Bash Shell整理
- bash脚本输入密码不回显问题的解决方法
- bash 编程中循环语句用法
- Linux BASH多进程并行处理的方法实现
- BASH 学习笔记小结
- 写出健壮Bash Shell脚本的一些技巧总结
- Bash Shell中忽略大小写的设置方法
- Linux bash Shell中的变量类型详解
- Linux系统中bash shell编程的10个基础问题讲解
- linux BASH shell下设置字体及背景颜色
- bash获取当前路径示例
- Bash Shell 注释多行的几种方法
- linux bash字符串处理大全
- 让代码整洁、过程清晰的BASH Shell编程技巧
- 使用Bash Shell获取文件名和目录名的简单方法
- Bash Shell脚本学习小结
- bash批量修改文件名称的方法小结(增加,去除,修改后缀)
- Bash Shell中Shift用法分享
- bash 循环中变量作用范围的问题分析
- 在Debian系的Linux中检查软件包是否被安装的方法