port-check - чекаем порты без проблем или скрипт для проверки доступности портов
Нам, админам, довольно часто, точнее постоянно, приходится мониторить различные ресурсы своей сети и не редко удаленной. Если нет возможности поставить на хост средства мониторинга, то приходится проверить по портам. Раньше я это делал так:
$ netcat -w3 -z host port && echo OKА что если нужно проверять несколько хостов и/или портов? Вот для этих целей и был написан скрипт.
Цель написания скрипта проста - возможность проверить несколько портов на одном и более хосте одной командой. Про существование различных программ я знаю, но не нашел подходящего для себя решения, поэтому написал свой скрипт основанный на netcat.
Ниже приведена справка по использованию скрипта port-check.
$ port-check --help
Скрипт port-check проверяет на доступность указанные порты на указанных хостах.
Возвращает количество закрытых портов.
Использование:
port-check [-q|-v] host port
port-check [-q|-v] host "port1 .. portN"
port-check [-q|-v] "host1 .. hostN" port
port-check [-q|-v] "host1 .. hostN" "port1 .. portN"
-q, --quiet
Ничего не выводить
-v, --verbose
Выводить т.ж. открытые порты, иначе только закрытые и не доступные хосты
-V, --version
Показать версию
-h, --help
Показать эту справкуВсе проще некуда =)
А вот несколько примеров работы скрипта:
$ port-check -v "mail.ru google.com 10.0.0.1 192.168.0.1" "80 443 ssh 21" mail.ru:80 open mail.ru:443 CLOSE!!! mail.ru:ssh CLOSE!!! mail.ru:21 CLOSE!!! google.com:80 open google.com:443 open google.com:ssh CLOSE!!! google.com:21 CLOSE!!! Host 10.0.0.1 unreachable!!! 192.168.0.1:80 open 192.168.0.1:443 CLOSE!!! 192.168.0.1:ssh CLOSE!!! 192.168.0.1:21 open $ port-check -v "mail.ru google.com 10.0.0.1 192.168.0.1" 80 mail.ru:80 open google.com:80 open Host 10.0.0.1 unreachable!!! 192.168.0.1:80 open $ port-check -v mail.ru "80 443 ssh 21" mail.ru:80 open mail.ru:443 CLOSE!!! mail.ru:ssh CLOSE!!! mail.ru:21 CLOSE!!! $ port-check -v 10.0.0.1 "80 443 ssh 21" Host 10.0.0.1 unreachable!!! $ port-check -q 10.0.0.1 "80 443 ssh 21" $ port-check "mail.ru google.com 10.0.0.1 192.168.0.1" "80 443 ssh 21" mail.ru:443 CLOSE!!! mail.ru:ssh CLOSE!!! mail.ru:21 CLOSE!!! google.com:ssh CLOSE!!! google.com:21 CLOSE!!! Host 10.0.0.1 unreachable!!! 192.168.0.1:443 CLOSE!!! 192.168.0.1:ssh CLOSE!!!
Вот и все. Надеюсь все понятно и наглядно.
Скачать port-check можно по этой ссылке. Пользуйтесь на здоровье.
Почти каждая строка в скрипте прокомментирована. Уверен, что даже новичок сможет разобраться, как работает скрипт.
Скрипт писал довольно долго, много тестировал, поэтому версия сразу 1.0 и, скорее всего, финальная. Даже не представляю, что еще в него можно добавить...
Критика/комментарии/мнения/etc с радостью принимаются :)))
- 13886 просмотров


LOL oй живот болит
тут типо порты >>> 80 443 ssh 21
O_o не знал что так возможно
Ж:-)
век живи, век rtfm
смотри в /etc/services
а откуда я думаешь выдираю поты? нехитрые превращения с cat grep и awk )
+1 :-)
автор не знает про nmap?
Автор знает про NMap, но...
Вот сравни:
Что-то я не увидел в выводе NMap'а гугла... Проверим его пингом на доступность и убедимся, что он в сети:
$ ping -c 1 216.239.59.104 PING 216.239.59.104 (216.239.59.104) 56(84) bytes of data. 64 bytes from 216.239.59.104: icmp_seq=1 ttl=242 time=132 ms --- 216.239.59.104 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 132.972/132.972/132.972/0.000 msТ.ж. замечал, что он (nmap) не всегда проверяет нормально порты, т.е. у меня были случаи когда я проверял порты на своих серверах (и не только) и он мне говорил, что порты закрыты (либо, что хост не доступен), хотя все работало на ура (этот же netcat говорил, что все ок + коннект на нужный порт был).
Но NMap - это очень хороший и мощный инструмент, тут без спора.
> Что-то я не увидел в выводе NMap'а гугла...
> Проверим его пингом на доступность и убедимся, что он в сети.
Ну потерялся где-то пакет в первом тесте и не потерялся во втором. Я не считаю это хорошим примером тестирования.
Попробуйте nmap пускать от непривилегированного пользователя, а не от рута, он тогда будет работать примерно так же как и netcat а не напрямую с сетью.
// darkk, у которого openid с ЖЖ глючит :-(
--unprivileged: Assume the user lacks raw socket privileges
© man nmap
// darkk
Никогда от рута его не запускал. К тому же $ в начале всех этих команд о чем говорит? :-)
Пакеты не потерялись, т.к.проверял несколько раз с двух разных машин и всё время такая фигня. Может это только в моей сети, но все же... Как нибудь проверю из другой сети.
Ну вообще то с портами ты промахнулся
А с кучей хостов это правда будет полезно.
Внутрь скрипта пока не смотрел.
да для быстрого тыканья nc|netcat
+1
О черт, совсем забыл про это... Спасибо, что напомнил. :)
Хотя нет, не забыл. Сделал именно так (как в скрипте), чтобы можно было отслеживать кол-во закрытых портов, т.е. чтобы скрипт это кол-во возвращал.
И, кстати, можно делать так:
$ nc -v -z -w3 mail.ru 80 21-25 mail.ru [194.67.57.26] 80 (www) open mail.ru [194.67.57.26] 25 (smtp) : Connection timed out mail.ru [194.67.57.26] 24 (?) : Connection timed out mail.ru [194.67.57.26] 23 (telnet) : Connection timed out mail.ru [194.67.57.26] 22 (ssh) : Connection timed out mail.ru [194.67.57.26] 21 (ftp) : Connection timed outЧто-то я ступил реально... Тут же можно их простой "фильтрацией" вывода подсчитать. Во вторник выложу обновленный.
Отправить комментарий