![使用 nc 或 ncat 进行 ldap 测试的退出代码](https://linux22.com/image/711199/%E4%BD%BF%E7%94%A8%20nc%20%E6%88%96%20ncat%20%E8%BF%9B%E8%A1%8C%20ldap%20%E6%B5%8B%E8%AF%95%E7%9A%84%E9%80%80%E5%87%BA%E4%BB%A3%E7%A0%81.png)
我正在尝试编写 shell 脚本来测试服务器是否能够访问指定的 IP 和端口。
我正在使用的命令:ncat -w 5 <IP> 636 or 389 > /dev/null 2>&1 < /dev/null | echo $?
问题是当我检查上述两个端口的退出代码时我收到 1。
当我在没有 /dev/null 的情况下运行它时,我得到了一个连接到 ip 的 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
关于如何使用 ncat 或 nc 测试 ip 和 ldap 端口,有什么建议吗?
答案1
尝试使用该-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
答案2
管道在这里毫无意义。请使用; echo $?
not | 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