我正在尝试编写 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