Linux上的TCP端口扫描脚本

Linux

使用服务器时,有时需要在某些服务器上找到开放端口,我们第一个想到的是使用nmap。在本文中,将介绍另一种方法。

# vim /usr/local/src/scaner_ports.sh

将代码写入其中

#!/bin/bash

if [ "$1" == "" ]
then
echo
echo This script scans TCP opened ports on IP or hostname
echo Usage : portscan.sh \<ip-or-hostname\> \[start-port\] \[end-port\]
echo start-port equals to 1 by default
echo end-port equals 1024 by default
echo
exit
fi

START_PORT=$2;[ -z "$START_PORT" ] && START_PORT=1
END_PORT=$3;[ -z "$END_PORT" ] && END_PORT=1024
echo Scanning $1 \(ports $START_PORT to $END_PORT\)

PORT_PROTOCOL="tcp"

scan_port(){
PORT_NUMBER=$1
PORT_SCAN_RESULT=`2>&1 echo "" > /dev/$PORT_PROTOCOL/$TARGET_NAME_OR_IP/$PORT_NUMBER | grep connect`
[ "$PORT_SCAN_RESULT" == "" ] && echo $PORT_NUMBER\/$PORT_PROTOCOL' 'open' '`grep $PORT_NUMBER/$PROTOCOL /etc/services | head -n1 | awk '{print $1}'`
}

TARGET_NAME_OR_IP=$1
echo 'PORT STATE SERVICE'

for PORT_NUMBER in `seq $START_PORT $END_PORT`
do
scan_port $PORT_NUMBER
done

设置权限:

# chmod +x /usr/local/src/scaner_ports.sh

你可以在脚本中使用多个参数:

  • IP /主机名。
  • 需要扫描的端口范围。

如果未指定端口范围,则默认扫描1-1024。

运行示例:

[root@YinHe]# bash scaner_ports.sh 192.168.13.140
Scanning 192.168.1.2 (ports 1 to 1024)
PORT STATE SERVICE
22/tcp open ssh
111/tcp open sunrpc
[root@YinHe]#
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共3条

请登录后发表评论

    • 头像自媒体运营0
    • 头像头条新闻0
    • 头像商机文库0