如何在 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 连接?的主要内容,如果未能解决你的问题,请参考以下文章
在 Firestore 上存储文档:检测操作是不是在服务器上成功、本地或不成功?
使用telnet命令检测端口是否正常报错“telnet: connect to address 192.168.88.132: Connection refused“