Поиск ftp серверов в локальной сети

Аватар пользователя Alexey

Есть сеть локалная 169.254.1.1/16, там бывает одновременно около 200 компов, всего наверно около тысячи. У многих стоят ftp серверы, задача: скрипт, что бы находил серверы, которые в сети и записывал их в файл, быстродействие очень важно, должен сеть просмотреть не более чем за 30-40 мин.
Было бы инетересно обсудить, как это сделать. Пока на ум приходит следующее:
сканировать все компы на предмет окрытого порта 21 и записывать в файл. Пытался использовать nmap, очень медленно, но там много опции, может что и не так сделал... Что думаете об этом?

Аватар пользователя sergeil

Re: поиск ftp серверов в локальной сети

Цитата:
Alexey писал:
Есть сеть локалная 169.254.1.1/16, там бывает одновременно около 200 компов, всего наверно около тысячи. У многих стоят ftp серверы, задача: скрипт, что бы находил серверы, которые в сети и записывал их в файл...

Простое, может не очень элегантное решение, которое приходит на ум - использовать tcptraceroute...

#! /bin/bash
logn="log.log"
base="169.254"
date > $logn
(
let B=0
while [ $B -lt 256 ] ; do
... let A=1
... while [ $A -lt 256 ] ; do
#......  Параллельное сканирования последнего октета
#......  Быстро, но создает большую нагрузку на сеть.
......... tcptraceroute -n -m 1 -q 1 -w 1 ${base}.${B}.${A} 21 &
......... let A=${A}+1
... done
....let B=${B}+1
done
) | grep open >> $logn
date >> $logn

Предупреждение: Ваш системный администратор должен разрешить сканирование сети.
Отказ от гарантий: Скрипт поставляется как есть. Автор не несет никакой ответственности
ни за какие последствия прямо или косвенно...
Улыбка

Аватар пользователя Alexey

Re: поиск ftp серверов в локальной сети

А не кажется ли Вам, что в циклах while, что-то напутано, и сеть скрипт сканит не верно?
Но идея использовать tcptraceroute мне очень понравилась.
У меня получился такой вариант:
#! /bin/bash
logn="log.log"
base="169.254"
date > $logn
(
let B=0
while [ $B -lt 256 ]
do
let A=1
while [ $A -lt 256 ]
do
#...... Параллельное сканирования последнего октета
#...... Быстро, но создает большую нагрузку на сеть.
tcptraceroute -n -m 1 -q 1 -w 1 ${base}.${B}.${A} 21 &
A=${A}+1
done
let B=${B}+1
done
) | grep open >> $logn
Сканирование заняло у меня около 40 мин, не быстро, но терпимо. Нагрузка на сеть не велика, админа для внутренней сети нет, она вообще случайно получилась, так что все ок, у нас тут настоящий OpenCommunity, в стиле GNU Катается от смеха
Спасибо за скрипт.

Аватар пользователя sergeil

Re: поиск ftp серверов в локальной сети

1/ Если чесно, на вскидку не понял чем Ваш скрипт отличается от моего. Если не трудно, ткните пальцем.
Если Вы о конструкции

while [ ...  ]  ;  do
done

то это полный аналог

while [ ... ]
do
done

В данной конструкции ";" является синтаксическим представлением перевода каретки.
Очень удобно, если скрипт желательно набрать в одной строке...
Например
[sergeil@homedesk ~]$ for file in *.sh ; do ls -l $file ; done
-rwx------ 1 sergeil sergeil 253 Окт 5 20:57 scanftp.sh
[sergeil@homedesk ~]$

2/ Странно, что так долго выполнялось сканирование. Возможно, это связано с низкой производительностью или высокой загруженностью хоста, который выполнял сканирование, поскольку параллельный запуск сильно потребляет ресурсы, но существенно сократить время сканирования. Моя машина была загружена на 100% , но сканирование шло достаточно шустро. Возможно, поскольку я сканировал сеть через VPN, исключалось время обработки запросов ARP.

Какой CPU, сколько памяти, какая сетевая карта и технология подключения сканирующей машины к сети?

Аватар пользователя Alexey

Re: поиск ftp серверов в локальной сети

Меня смытили точки .... c ними не работает. В другом одно и тоже.
Но не понятно о параллельном сканирование - что тут происходит параллельно, по моему два вложенных цикла и все.
Сейчас выключил все приложения (прошлый раз я фильм смотрел) время 27 мин., если без иксов, то наверное быстрее еще
О машине:
AMD Atlon 1.6G, ОЗУ 512M, карта встроенная в мат. KT400, 100Mb, сеть Ethernet, я вот подключения способ не знаю и топологию сети незнаю Улыбка
Эта сеть предназначена для выхода а инет, а доступность внутресетевых ресурсов это как бы побочный эффект. ( с которым провайдер постоянно борется)

Аватар пользователя sergeil

Re: поиск ftp серверов в локальной сети

Цитата:
Alexey писал:
Меня смутили точки .... c ними не работает. В другом одно и тоже.

Точки я поставил для сохранения форматирования. Поскольку основной задачей было показать структуру программы, а не обеспчить ее работоспособность. Точки были поставлены с целью предотвратить искажения отступов при публикации Улыбка

Цитата:
Но не понятно о параллельном сканирование - что тут происходит параллельно, по моему два вложенных цикла и все.

Амперсанд в конце строки tcptraceroute предписывает запуск процесса в фоновом режиме.
Запустите сканирование в одном окне и выполните `ps -ef` во втором... Вы поймете почему я говорил о доступных системный ресурсах... Также не помешает посмотреть загрузку системы. Она будет 100%. Готовьтесь также получать на консоль и в лог системные сообщения о переполнении таблицы "соседей"

Цитата:
Сейчас выключил все приложения (прошлый раз я фильм смотрел) время 27 мин., если без иксов, то наверное быстрее еще ...

Скрипт захватывает 100% CPU. То есть, чем больше Вы ему отдадите - тем быстрее будет...

RSS-материал