BASH SHELL下两个用于检查端口情况的脚本

这几天需要做Linux的TCP端口检查脚本,发现netstat、nc命令虽好,但不够直观,而且端口多了检查起来有点麻烦,动手学做了两个脚本。一个是用参数形式检查端口情况,另一个使用配置文件扫描端口。记录下来方便以后使用。

一、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检测端口按照每行一个记录到文件内。执行效果:

[[email protected] ~]#. 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 [email protected]
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

使用时直接在脚本后添加端口号作为参数,若扫描多个端口号,则每个端口号以空格隔开。若其中一个参数非数字,则程序终止。执行效果:

[[email protected] ~]#./netstat_check.sh 789

扫描到的端口无输出。

[[email protected] ~]#./netstat_check.sh 123 456 789
TCP port 123 456 failed.

程序把所有失败的端口罗列出来。

[[email protected] ~]#./netstat_check.sh 123 hello 456
hello not a number.

不是数字的程序输出错误。

时间: 2024-10-08 01:12:39

BASH SHELL下两个用于检查端口情况的脚本的相关文章

linux BASH shell下设置字体及背景颜色

BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

nc命令检查端口是否存活脚本

nc命令检查端口是否存活 #!/bin/bash for IP in `cat /log/ip_ubt.txt` do IPP="$IP 22" /bin/nc -v -w 5 -z $IPP > /dev/null 2>&1 if [ $? -eq 0 ];then echo $IPP:ok >> /log/ssh_22_ok.txt echo $IP >> /log/ssh_22.txt fi done

启动bash shell的三种方式下,检查的启动文件

启动bash shell的三种方式 1.登录时当做默认登录shell 2.作为非登录shell的交互式shell 3.作为运行脚本的非交互shell 一.登录shell 登录Linux系统时,bash shell会作为登录shell启动,登录shell会从4个不同的启动文件里读取命令,下面是bash shell处理这些文件的次序: 1./etc/profile 2.$HOME/.bash_profile 3.$HOME/.bash_login 4.$HOME/.profile 其中/etc/pr

Linux 常用命令解析及Bash Shell脚本用法示例

 摘要 Linux 命令是基于文本格式输入输出的一种程序,按照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合可以具有更强大的功能,而具有这种灵活性的主要原因是Linux规定程序的输入输出必须坚持文件流格式,即文本格式,而这就是Linux系统的核心之一. 对于Bash,即Shell的一种,为现在主流Linux发行版本默认的命令行解释器,是一种功能强大的工具,可以实现对Linux支持的程序命令的组合,从而实现强大功能.类似于Window系统的bat文件,Bash具有更为强大的

Bash Shell 小试牛刀

一.终端打印 [[email protected] ~]# echo welcome to bash! welcome to bash! [[email protected] ~]$ echo 'welcome to bash!' welcome to bash! [[email protected] ~]$ echo "welcome to bash\!" welcome to bash\! (注意,双引号内不能直接用特殊符号,需要用转义符\) [[email protected]

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo

系统管理中 bash shell 脚本常用方法总结

FROM: http://www.cnblogs.com/hunterfu/archive/2010/02/23/1672129.html 在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则. 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符 ,不会作变量的引用,直接输出字符窜.请看如下例子: [[email protec

[Bash Shell] Shell学习笔记

1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,s

bash shell基础编程

一. BASH Shell编程基础 1. BASH Shell的可执行文件 (1) 内部命令 (2) 外部命令 (3) 脚本文件 2. BASH Shell的命令解释过程 在path指定范围内查找(外部命令) ...... 3. BASH Shell的变量 (1) 变量的分类 -按作用域分 a. 局部变量 b. 全局变量 -按用途分 a. 自定义变量 b. 系统环境变量(path) c. 特殊变量 (2) 定义和引用变量 -定义变量: 即用即定义.不用加$ 注: 可用export命令将变量输出为