
Сканер tcp портов на bash в Unix/Linux
При работе с серверами, иногда появляется нужда в поиске открытых портов на каком-то из серверов и одно из самых лучших средств что приходит на ум — это использование nmap-а, но он не всегда имеется в ОС. По этому, я в своей статье «Сканер tcp портов на bash в Unix/Linux» расскажу как можно просканить порты другим способом — написать скрипт на баш.
# 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
Использование.
В скрипте можно использовать от 1 до 3-х параметров:
- IP/имя хоста.
- Порт с которого начинать сканирование.
- Порт до которого сканировать.
Если начальное и/или конечное значение на было задано, то сканер будет работать с 1 по 1024.
Приведу пример выполнения скрипта:
[root@localhost src]# bash scaner_ports.sh 192.168.13.140 Scanning 192.168.13.140 (ports 1 to 1024) PORT STATE SERVICE 22/tcp open ssh 111/tcp open sunrpc [root@localhost src]#
Вот такой полезный сканер портов, а тема «Сканер tcp портов на bash в Unix/Linux» завершена.