【问题标题】:How would I detect a successful or unsuccessful telnet connection in CMD?如何在 CMD 中检测成功或不成功的 telnet 连接?
【发布时间】: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

等等

【问题讨论】:

    标签: batch-file cmd telnet


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 1970-01-01
      • 2010-12-14
      • 2018-02-21
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多