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

简介:

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


一、nc_check.sh

1
2
3
4
5
6
7
8
9
10
#!/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的文件,内容为:

1
2
3
4
cat  check_port
123
345
456


所有TCP检测端口按照每行一个记录到文件内。执行效果:

1
2
3
4
[root@ABC ~] #. nc_check
123 OK
345 OK
456 Failed

程序把列表内所有端口检查一遍,成功的OK,失败的Failed


二、netstat_check.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/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


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

1
[root@ABC ~] #./netstat_check.sh 789

扫描到的端口无输出。

1
2
[root@ABC ~] #./netstat_check.sh 123 456 789
TCP port 123 456 failed.

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

1
2
[root@ABC ~] #./netstat_check.sh 123 hello 456
hello not a number.

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



本文转自 gole_huang 51CTO博客,原文链接:http://blog.51cto.com/golehuang/1768264

相关文章
|
11天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
22 1
|
11天前
|
存储 Shell Linux
Linux Bash 脚本中的 IFS 是什么?
【4月更文挑战第25天】
32 0
Linux Bash 脚本中的 IFS 是什么?
|
11天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
15 1
|
11天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
11天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
11天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
31 5
|
11天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
11天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
11天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
17 3
|
11天前
|
弹性计算 运维 监控