用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 2000172.27.193.2 2000172.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不成功就有可能是假象了,您就别用该方案了。
时间: 2024-10-24 04:12:18