|
Условие в 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) Батник не надо качать, он встроен в винду еще с тех времен винда было досом.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |