如何使用批处理脚本将命令传递到 telnet 窗口?

如何使用批处理脚本将命令传递到 telnet 窗口?

我正在尝试使用 Windows 7 中的 telnet 命令通过批处理脚本控制 wifi 设备,但我不知道如何将命令传递到 telnet 窗口。这将是调整其他设备和 PC 设置的较长脚本的一部分。

我可以手动执行此操作,方法是运行telnet <IP address> 55443cmd.exe,这会创建一个新窗口。在该窗口中,我可以为设备编写命令,设备可以按预期工作。但是,当我在脚本中编写代码时,如下所示:

telnet <IP address> 55443 <device commands>

它们<device commands>不会传递到新创建的 telnet 窗口。

答案1



telnet 命令没有提供很多输入某些命令的选项......


我会在这里留下两个可能的选择

一种选择是使用发送键/VBS非常有用发送按键、命令等,将发送您的条目/类型发送至远程登录接口实例/会话...

下面是使用的示例发送键/VBS发送登录/输入数据蝙蝠文件和哪个在运行时生成文件虚拟专用网络履行任务

@echo off 
setlocal enabledelayedexpansion 

echo/ && cls && color 9F
%__APPDIR__%mode.com 77,30

set "_user_=cisco_user"
set "_pwd_=my_secret_pwd"
set "_temp_vbs=%tmp%\_tmp_file_vbs_.vbs"

>"!_temp_vbs!"^
    (
     echo/ Set WshShell = WScript.CreateObject^("WScript.Shell"^)
     echo/ Set objShell = WScript.CreateObject^("WScript.Shell"^)
     echo/ StrPwd  = "!_pwd_!"
     echo/ StrUser = "!_user_!"
     echo/ for i=1 To Len^(StrUser^)
     echo/     x = Mid^(StrUser,i,1^)
     echo/     WshShell.SendKeys x
     echo/     Wscript.Sleep 250
     echo/ Next
     echo/ Wscript.Sleep 500
     echo/ WshShell.SendKeys "({ENTER})"
     echo/ for j=1 To Len^(StrPwd^)
     echo/     x = Mid^(StrPwd,j,1^)
     echo/     WshShell.SendKeys x
     echo/     Wscript.Sleep 200
     echo/ Next 
     echo/ Wscript.Sleep 200
     echo/ Wscript.Sleep 200
     echo/ WshShell.SendKeys "dir"
     echo/ Wscript.Sleep 200
     echo/ WshShell.SendKeys "({ENTER})"
     echo/ Wscript.Sleep 200
     echo/ WshShell.SendKeys "quit"
     echo/ Wscript.Sleep 200
     echo/ WshShell.SendKeys "({ENTER})"
     ) && %__APPDIR__%telnet.exe 192.168.0.254 
     
"%__APPDIR__%cScript.exe" //nologo "!_temp_vbs!"
2>nul >nul del /q /f "!_temp_vbs!" & endlocal & goto :EOF

你可以考虑看看这个问题,至于为什么telnet.exe未运行/

要解决此问题,请在命令行上应用此命令(这需要管理员权限)并仅运行一次此命令

for /f %i in ('%__APPDIR__%where /r "C:\Windows\System32" "telnet.exe.mui" ^|%__APPDIR__%findstr.exe [a-z]\-[A-Z] ')do for %C in ("%windir%\system32\.","%windir%\SysWOW64\.")do if exist "%~C." copy /y "%~i" "%~C"

Telnet 脚本工具是一个用于自动化 telnet 会话的实用程序(例如,在 Linux 系统上调用 dip,或执行路由器维护)。

Telnet 脚本工具也可以将条目发送到 telnet...

基本上,该软件会读取屏幕并寻找一个预测字符串,您将告知该字符串等待软件将下一个命令发送到 telnet......

下面是使用Telnet 脚本工具发送命令输入通过使用内容文本文件“%temp%\script_ts.scr”

@echo off 

setlocal enabledelayedexpansion 

%__APPDIR__%mode.com 77,30
echo/ && color 9F && echo/

set "_user_=my_user_name"
set "_pwd_=my_secret_pwd"
set "_ip_door_=10.0.50.1 23"

>"%temp%\script_ts.scr" ^
    (
     echo=!_ip_door_!
     echo=WAIT "User Name"
     echo=SEND "!_user_!\m"
     echo=WAIT "Passoword"
     echo=SEND "!_pwd_!\m"
    ) && "%temp%\TST10.exe" /r:"%temp%\script_ts.scr" /o:"%temp%\output_ts.txt"
endlocal & goto :EOF


  • 更新 v2 - 将带有 sendkey 的 bat 移植到你的命令(字符串):
 {"id":0,"method":"set_power","params":["on","smooth",500]}

使用Send Key在你的命令中有很多特殊字符,你需要退出{:)}

@echo off && setlocal enabledelayedexpansion 

echo/ && cls && color 9F && %__APPDIR__%mode.com 77,30 && set "_temp_vbs=%tmp%\_tmp_file_vbs_.vbs" && >"!_temp_vbs!"^
  (    
   echo= On Error Resume Next
   echo= Set WshShell = WScript.CreateObject("WScript.Shell"^)
   echo= Set ObjShell = WScript.CreateObject("WScript.Shell"^)
   echo= Wsh.sleep 2000 'adjust this timeout for your needs
   echo= ObjShell.AppActivate "MS Telnet CMD" 
   echo= Wsh.sleep 333
   echo= WshShell.SendKeys "o 192.168.0.1 55443~"
   echo= Wsh.sleep 1500
   echo= WshShell.SendKeys "({{}{""}id{""}:0,{""}method{""}:{""}set_power{""},{""}params{""}{:}{[}{""}on{""},{""}smooth{""},500{]}{}}})"
   echo= Wsh.sleep 50
   echo= WshShell.SendKeys "~"
   echo= Wsh.sleep 50
   echo= WshShell.SendKeys "^]"
   echo= Wsh.sleep 50
   echo= WshShell.SendKeys "quit~"
  ) && pushd %windir%\system32\ & title <nul && title MS Telnet CMD

start "" /b "%__APPDIR__%cScript.exe" //nologo "!_temp_vbs!" && call telnet.exe 

:loop
tasklist.exe /nh | findstr.exe /i cscript.exe >nul && goto :loop
2>nul >nul del /q /f "!_temp_vbs!" & popd & endlocal & exit

相关内容