【发布时间】:2020-08-30 12:56:34
【问题描述】:
我正在运行以下命令来测试端口连接
curl -v telnet://target ip address:desired port number
当服务器连接成功时,我看到如下输出:
# curl -v telnet://127.0.0.1:22
* About to connect() to 127.0.0.1 port 22 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 22 (#0)
当服务器连接不成功时,我看到如下输出:
# curl -v telnet://127.0.0.1:22
* About to connect() to 127.0.0.1 port 22 (#0)
* Trying 127.0.0.1...
现在,对于给定的服务器列表,我正在尝试使用 bash 脚本将其自动化。
for element in "${array[@]}"; do
timeout 2s curl -v telnet://"$element":22 >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "'$element' connected" && break
else
echo "Connection with $element failed."
fi
done
数组有值:
abc001
abc002
abc003
我总是从else 语句中获取输出
Connection with abc001 failed.
Connection with abc002 failed.
Connection with abc003 failed.
我想是因为返回码总是124
成功和失败的错误代码都是124
如何修改我的脚本以使其正常工作?
【问题讨论】:
-
即使连接成功返回码也是124?
-
是的,成功和失败都是 124
-
这……很奇怪。也许你可以
grep输出一些指示成功的字符串。 -
我可以 grep 获取
Connected,但您能提供更新后的脚本吗?提前致谢 -
@mealhour :如果您想找出连接被拒绝的原因,为什么要从 telnet 命令中丢弃 stderr?此外,在 2 秒超时窗口内,与 abc123 的命令行连接是否有效?
标签: linux bash curl telnet rhel