求助:编写Bat脚本实现Telnet自动登录及后续操作
实现Telnet自动登录与操作的脚本方案
Windows原生Telnet工具是交互式的,无法直接通过纯批处理完成自动输入,以下两种方案可解决你的需求:
方案一:VBScript + 批处理(模拟键盘输入)
通过模拟人工键盘操作实现自动化,适合快速搭建脚本。
- 新建
telnet_auto.vbs脚本,内容如下:
Set WshShell = WScript.CreateObject("WScript.Shell") ' 启动Telnet并连接目标服务器 WshShell.Run "telnet 12.122.444.30" WScript.Sleep 2000 ' 等待连接建立,根据实际网络速度调整时长 ' 若登录前需按回车激活提示,取消下面两行注释 ' WshShell.SendKeys "{ENTER}" ' WScript.Sleep 500 ' 输入登录账号 WshShell.SendKeys "你的账号{ENTER}" WScript.Sleep 1000 ' 输入登录密码 WshShell.SendKeys "你的密码{ENTER}" WScript.Sleep 1000 ' 执行需要的操作命令,按需添加或修改 WshShell.SendKeys "操作命令1{ENTER}" WScript.Sleep 1000 WshShell.SendKeys "操作命令2{ENTER}" WScript.Sleep 1000 ' 输入目标数字并回车 WshShell.SendKeys "目标数字{ENTER}"
- 新建
run_telnet.bat批处理文件,内容如下:
@echo off cscript //nologo telnet_auto.vbs
注意事项:
- 将脚本中的
你的账号、你的密码、操作命令1/2、目标数字替换为实际内容 - 调整
WScript.Sleep的数值,确保每一步操作有足够的响应时间,避免输入过快导致失败
方案二:PowerShell脚本(TCP套接字通信,更可靠)
直接通过TCP协议与Telnet服务器通信,无需模拟键盘,稳定性更强。
新建AutoTelnet.ps1脚本,内容如下:
# 连接Telnet服务器 $telnetServer = "12.122.444.30" $telnetPort = 23 $telnet = New-Object System.Net.Sockets.TcpClient($telnetServer, $telnetPort) if ($telnet.Connected) { $stream = $telnet.GetStream() $reader = New-Object System.IO.StreamReader($stream) $writer = New-Object System.IO.StreamWriter($stream) $writer.AutoFlush = $true # 等待登录提示(示例:匹配"Login:"字符串,根据服务器实际提示修改) while ($true) { $line = $reader.ReadLine() if ($line -match "Login:") { break } } # 输入账号 $writer.WriteLine("你的账号") Start-Sleep -Seconds 1 # 等待密码提示(示例:匹配"Password:"字符串) while ($true) { $line = $reader.ReadLine() if ($line -match "Password:") { break } } # 输入密码 $writer.WriteLine("你的密码") Start-Sleep -Seconds 1 # 执行操作命令 $writer.WriteLine("操作命令1") Start-Sleep -Seconds 1 $writer.WriteLine("操作命令2") Start-Sleep -Seconds 1 # 输入目标数字并回车 $writer.WriteLine("目标数字") # 可选:读取并输出服务器返回的结果 while ($stream.DataAvailable) { Write-Host $reader.ReadLine() } # 关闭连接 $reader.Close() $writer.Close() $telnet.Close() } else { Write-Host "无法连接到Telnet服务器" }
注意事项:
- 替换占位符为实际的账号、密码、命令和目标数字
- 根据服务器实际的登录提示文本,修改
-match后的字符串,比固定等待时间更可靠 - 右键选择"使用PowerShell运行"即可执行脚本
内容的提问来源于stack exchange,提问作者Rob Johnston
相关产品推荐
相关产品推荐

