如何使用批處理解決批量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不成功就有可能是假象了,您就別用該方案了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM