• 如何使用批处理解决批量telnet命令的输入


    用telnet命令做不了自动,因为如果成功telnet了,telnet就控制输入了。
    其实,不用那么麻烦,您下载一个微软官方的扫描器叫portqry,用一句for读取您文件里的ip和port,执行就行了。
    假设您的文件叫list.txt,里面是ip port的格式,就这么写:
    @echo off
    @setlocal enabledelayedexpansion
    @if exist notopen.log del /f /q notopen.log
    @if exist open.log del /f /q open.log
    @for /f "tokens=1,2* delims= " %%i in (list.txt) do(
    @portqry -n %%i -e %%j|find "NOT" >nul
    @if %errorlevel%==0 (
    @echo %%i:%%j not open >>notopen.log
    ) else (
    @echo %%i:%%j is open >>open.log
    )
    )
    把上面的批处理存为myscan.bat,和您的列表文件,以及portqry工具放在一个文件夹里就行了。运行批处理后,通的存到open.log,不通的存到notopen.log。

    追问:
    非常感谢, 我测试了您的方法结果,结果是一闪黑框就没了.也没有产生open.log和notopen.log这两个文件,是不是我哪里写错了.最大的可能 是不是我在list.txt中的IP格式不对。我写的是
    172.27.193.1 2000
    172.27.193.2 2000
    172.27.193.3 2000
    这样的格式.对不对.如果不对应该写什么样的IP格式?

    追答:
    不是您的格式不对,是我马虎了,抱歉。给您从发一段,这段是在XP下实际测试后的。
    @echo off
    @setlocal enabledelayedexpansion
    @if exist notopen.log del /f /q notopen.log
    @if exist open.log del /f /q open.log
    @for /f "tokens=1,2* delims= " %%i in (list.txt) do (
    @portqry -n %%i -e %%j|find ": LISTENING" >nul
    @if !errorlevel!==0 (
    @echo %%i:%%j >>open.log
    ) else (
    @echo %%i:%%j >>notopen.log
    )
    )
    您再试一下。不过当地址端口不通时,我的机器每个地址大约有60秒超时间隔,所以如果,有很多机器没开机的话,效率不是太高。

    有个解决办法,就是先用for循环ping一遍,ping通了的再进行该扫描,我也给您简单写了个批处理,就叫myping.bat吧。
    @echo off
    @setlocal enabledelayedexpansion
    @if exist ping_ok.txt del /f /q ping_ok.txt
    @for /f "tokens=1,2* delims= " %%i in (list.txt) do (
    @ping -n 1 %%i|find "TTL=" >nul
    @if !errorlevel!==0 @echo %%i %%j >>ping_ok.txt
    )
    这个执行完后,会生成ping_ok.txt,把第一段批处理里的list.txt换成这个ping_ok.txt就行了。该解决方案的问题是,如果您的客户端有防火墙、或网络丢包率高,那ping不成功就有可能是假象了,您就别用该方案了。
  • 相关阅读:
    使windows server 2003 开机不显示登录页面
    G
    D
    三分求函数极值详解
    H
    G
    E
    D
    A
    B
  • 原文地址:https://www.cnblogs.com/superfeeling/p/5030783.html
Copyright © 2020-2023  润新知