linux脚本检查端口,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检测端口按照每行一个记录到文件内。执行效果:[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.

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值