Я пытаюсь написать сценарий оболочки, чтобы проверить, может ли сервер достичь указанного IP-адреса и порта.
Команды, которые я использую: ncat -w 5 <IP> 636 or 389 > /dev/null 2>&1 < /dev/null | echo $?
Проблема в том, что когда я проверяю код выхода для двух вышеуказанных портов, я получаю 1.
Когда я запускаю его без / dev / null, я подключаюсь к ip.
ncat -v -w 5 <IP> 636
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to <IP>:636.
^C
Проблема в том, что если я использую вторую команду без / dev / null, мне нужно вручную отменить команду, используя: CTRL + C
Любые предложения о том, как я могу проверить порт ip и ldap с помощью ncat или nc?
Трубопровод здесь не имеет смысла. Использовать ; echo $?
не | echo $?
.
2. Shell Command Language
[...]
2.9.2 Pipelines
[...]
the exit status shall be the exit status of the last command specified in the pipeline
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_02
Попробуйте использовать -z
флаг. Если он есть.
-z Specifies that nc should just scan for listening daemons, without
sending any data to them. It is an error to use this option in
conjunction with the -l option.
Так что попробуйте это
ncat -z -w 5 <IP> 636