Telnet 退出状态对于连接被拒绝和连接超时是相同的

Telnet 退出状态对于连接被拒绝和连接超时是相同的

我创建了一个 bash 脚本,用于检查与 telnet 主机的连接。以下是核心代码:

telnet $X 2404 < $TEST &>/dev/null
if [ $? -ne 0 ] ; then
    echo -n "$X " >> $LOG_FILE
    echo "OFFLINE <---" >> $LOG_FILE
else
    echo -n "$X " >> $LOG_FILE
    echo "ONLINE" >> $LOG_FILE
fi

我想要三条独立的信息:

  • 已建立 telnet 在线连接
  • 因连接被拒绝而离线
  • 连接超时 TIMEOUT

问题是“连接被拒绝”和“连接超时”都返回退出状态 1。

有什么想法吗?谢谢大家。

答案1

我很想对它进行计时 - 如果它很快返回,则假设被拒绝,否则超时。您可能会遇到一些在超时之前被拒绝的极端情况,但至少您应该会得到合理的结果。

使用bash 的时间命令会满足您的需求。您需要确定拒绝和超时的阈值,这可能需要反复试验。

相关内容