如何在 CMD 中检测成功或不成功的 telnet 连接?

Posted

技术标签:

【中文标题】如何在 CMD 中检测成功或不成功的 telnet 连接?【英文标题】:How would I detect a successful or unsuccessful telnet connection in CMD? 【发布时间】:2020-01-02 04:49:54 【问题描述】:

我设置了一个批处理脚本来启动不同的服务器,所有服务器都侦听不同的端口但相同的 ip。为了不锁定运行服务器的计算机,我希望服务器一次启动 1 个。

我的解决方案是使用 telnet 并检查端口是否打开,然后继续启动下一个服务器。

我知道 telnet 使用特定的时间长度来测试连接,我是否可以将其设置为不确定的,以便它不会超时,或者至少几分钟,如果失败,它可能会抛出错误被调查?

我希望我的批处理文件看起来像:

:startserver1

Start server 1 on port 101

telnet ip 101

if connection is successful, goto :startserver2

等等

【问题讨论】:

【参考方案1】:

您可以检查您的端口 (101) 上的连接是否可用

start telnet ip 101
call :waitForPort 101 
goto :end

:waitForPort %1 %2
set PORTTOWAITFOR=%1
set MAXWAITTIME=%2
set SLEEPTIME=3
set LOOPCOUNTER=0
if "%MAXWAITTIME%"=="" echo Waiting for port %PORTTOWAITFOR% ...
if not "%MAXWAITTIME%"=="" echo Waiting for port %PORTTOWAITFOR% for %MAXWAITTIME% seconds ...
:waitForPortLoop
set REPEATLOOP=TRUE
if not "%MAXWAITTIME%"=="" set REPEATLOOP=FALSE & call :checkWaitTime
if not "%REPEATLOOP%"=="TRUE" echo leave because timeout of %MAXWAITTIME% was reached & goto :end
call :sleep %SLEEPTIME%
netstat -n|%windir%\system32\find.exe "%PORTTOWAITFOR%" 2> nul 1> nul
if not %ERRORLEVEL%==0 goto :waitForPortLoop
if %ERRORLEVEL%==0 goto :end

:checkWaitTime
set /A ACTUAL_WAITTME=%LOOPCOUNTER%*%SLEEPTIME%
rem echo waited %ACTUAL_WAITTME% seconds
if %ACTUAL_WAITTME% lss %MAXWAITTIME% set REPEATLOOP=TRUE
set /A LOOPCOUNTER=%LOOPCOUNTER%+1
goto :end

【讨论】:

以上是关于如何在 CMD 中检测成功或不成功的 telnet 连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用telnet命令检测端口映射是不是成功

在 Firestore 上存储文档:检测操作是不是在服务器上成功、本地或不成功?

win7系统远程连接的Telnet连接不成功怎么办

如何让 telnet 在 Gitbash 中成功运行?

如何使用telnet测试端口号

使用telnet命令检测端口是否正常报错“telnet: connect to address 192.168.88.132: Connection refused“