Имя: Пароль:
IT
Админ
Условие в cmd (bat)
, ,
0 Vetliya3451
 
10.10.18
06:38
Всем привет
Как проверить открыт ли порт
Например мне нужно если порт открыт то сообщить привет мир иначе сообщить порт не открыт

Как я понимаю нужно пользоваться команду telnet ip port но как ее использовать в условии?
1 sFAQer
 
10.10.18
07:08
(0) Чей порт?
2 Vetliya3451
 
10.10.18
07:14
К примеру rdp 3389 в сети скажем мне нужно проверить смогу ли я подрубить к серверу терминалов или нет если смогу тогда сообщить привет мир если не смогу тогда сообщить порт закрыт
3 Мимохожий Однако
 
10.10.18
07:17
4 Vetliya3451
 
10.10.18
07:29
(3) и как же я Кингом проверю доступность сервера терминалов? К тому же если пинг выключен я спрашивал как проверить порт открыт или нет и по условию сообщить
5 kittystark
 
10.10.18
07:33
telnet <ip> <port>
6 sFAQer
 
10.10.18
07:37
(0) дефолтными виндовыми утилитами я так понимаю никак, т.к. телнет при успешном подключении откроет сессию и ничё не вернёт.
7 Vetliya3451
 
10.10.18
07:42
(6) ок а условие если телнет вернул ошибку тогда иначе но я не понимаю как узнать вернул он ошибку или нет?
8 sFAQer
 
10.10.18
07:43
(7) letnet localhost 3389 || echo 'порт закрыт'
9 sFAQer
 
10.10.18
07:43
+ (8) letnet = telnet
10 Cyberhawk
 
10.10.18
07:44
Можешь писать результат выполнения команды в файлик и затем анализировать его
11 sFAQer
 
10.10.18
07:46
(10) Что будет в файлике в случае когда telnet откроет сессию и в ней сервер ничего не скажет?
12 Vetliya3451
 
10.10.18
08:00
(8) нечего не возвращает и долго думает!
И если бы даже и сработало то как быть с иначе?
13 Cyberhawk
 
10.10.18
08:00
Это уже ты сам проверяй. Но Я думаю, что содержимое файлов будет отличаться и тем самым в обоих случаях будет маркер, однозначно позволяющий определить по какому пути пошла проверка
14 Vetliya3451
 
10.10.18
08:12
Ок спасибо
15 Доктор Манхэттен
 
10.10.18
16:54
(12) Если телнет не подключится, то он вернет ответ сразу, с ошибкой. Значит порт не открыт.
Иначе - значит порт открыт.

Нужно просто подождать какое-то время, например 1 секунду. Если ответ так и не пришел - считаем что телнет успешно подключился, и сообщаем привет мир.
16 Cyberhawk
 
10.10.18
18:39
(15) До отлпупа проходит 20-30 секунд
17 NorthWind
 
10.10.18
19:13
(0) как здесь уже верно сказали, "родными" утилами никак.
Если допустимо ставить сторонний софт, то можно NMAP виндовый поставить, просканировать им порт и потом поискать в его выдаче строчку closed или open в зависимости от того что надо. Результат проверить в переменной errorlevel. Примерно так:

nmap 192.168.103.9 -p 3389 | find "closed"
echo %errorlevel%

в данном случае если порт открыт, то будет возвращена единица, иначе ноль.
18 NorthWind
 
10.10.18
19:13
19 Доктор Манхэттен
 
10.10.18
22:02
(16) Мне сразу пишет. Если точнее, меньше десятой доли секунды приходит ответ если порт не открыт, потому что глазом даже задержки не видно.
20 spectre1978
 
10.10.18
22:34
(19) так или иначе это не решает предложенной задачи. В случае открытия порта телнет простартует сессию, которая повиснет на неопределенное время, и чего с ней делать - не очень понятно. Это годится для интерактивной проверки, но не для работы в батнике.
21 Доктор Манхэттен
 
10.10.18
23:06
(20) Понятно что с ней делать - гасить нафиг. Что непонятного?
22 sechs
 
10.10.18
23:12
23 Доктор Манхэттен
 
10.10.18
23:22
(0) Если у тебя виндовс 10, то можно через курл, вот пример:

curl -s ya.ru:33 && echo Privet Mir || echo Port Ne Otkrit
24 Доктор Манхэттен
 
10.10.18
23:25
(22) Эй, интернетом нельзя пользоваться. Это задача на сообразительность.
25 trdm
 
11.10.18
06:44
netstat | find /C ":3389 "
26 sechs
 
11.10.18
08:11
(24) > интернетом нельзя пользоваться
... написал какой-то чувак в интернете
27 NorthWind
 
11.10.18
10:33
(21) типа, сначала создать себе трудности, а потом их мужественно преодолеть путем пристукивания процесса телнета? Ну да, ну да. Через попу к звездам.
28 Доктор Манхэттен
 
11.10.18
11:23
(25) -1

(26) Ахаха! Подколол, молодец )))

(27) Per asinum ad astra. В (23) я предложил более удобное решение.
29 eklmn
 
гуру
11.10.18
11:45
вставлю свой вариант )

psping 1.1.1.1:3389
30 Cyberhawk
 
11.10.18
11:46
(29) В Винде не работает. Не кроссплатформненько
31 eklmn
 
гуру
11.10.18
11:54
(30) а батник кросплатформенно?
естесвенно не работает, его ж скачать надо с сайта майкрософта
32 Доктор Манхэттен
 
11.10.18
14:57
(29) 'psping' is not recognized as an internal or external command,
operable program or batch file.
33 Доктор Манхэттен
 
11.10.18
14:59
(31) Батник не надо качать, он встроен в винду еще с тех времен винда было досом.
AdBlock убивает бесплатный контент. 1Сергей