BASH: скрипт проверки соединения со списком хостов по заданным портам

Автор: | 10/10/2013
 

terminalСкрипт выполняет проверку host:port по заданному списку.

Формат списка:

hostName hostIP hostPort

Например:

domain.com 127.0.0.1 22

Сам скрипт:

#!/bin/bash
# задаём путь к временному файлу, в который будем писать результат выполнения проверки
FILE="/tmp/db_hosts_con_test.log"

rm -rf $FILE
touch $FILE

# указываем файл со списком хостов и портов, запускаем цикл в который сразу "скармливаем" три переменных для проверки
cat /home/setevoy/scripts/db_hosts.txt |  while read NAME HOST PORT
do

# для красоты вывода результата - сначала вписываем имя проверяемого хоста
printf "%stt" $NAME >> $FILE &&

# записываем результат проверки хост:порт
printf "%st%sn" `nmap -Pn -p $PORT $HOST

# выделяем только 6 строку результата проверки и только 1 и 2 поля
| head -n 6 | tail -n 1 | cut -d' ' -f 1,2

# вырезаем лишнее - слово "tcp" и меняем "filtered" на "closed", дописываем в файл результат
| sed -e '{s/.tcp//;}' -e 's/filtered/closed/g'` >> $FILE

done

# выводим на консоль сам результат
cat $FILE

Пример выполнения (имена хостов в примере вырезаны):

# ./q.sh | cut -d'.' -f 4
com             1540    open
com             1665    closed
com             22      closed
com             1710    closed
com             1702    closed
com             1702    closed
com             1701    closed
com             1702    closed
com             1765    open
com             22      open
com             1845    open
com             1576    closed
com             389     open
com             22      open
com             1776    open
com             389     open
com             1845    closed
com             1676    open
com             22      closed