我遇到了一个问题,我使用Windows任务调度程序运行autoit(.au3)脚本,将交互式命令发送到第二个程序PuTTY,用于通过串口(RS232)向电气设备发送命令接受putty命令。
我从其他线程中读到的问题是,当终端被锁定时,GUI命令不会运行,并且由于安全原因,我无法一直运行登录。
有没有一种方法可以在不使用“键盘/鼠标”命令的情况下让putty工作? 这是非常简单的脚本。
run ("C:\Users\Public\Downloads\putty\putty.exe")
sleep(1000)
send ("{TAB 4}")//all these commands select the saved configuration for the com port, and open the PuTTY console
send ("{DOWN 2}")
send ("{TAB 1}")
send ("{ENTER}")
sleep(600)
send ("{TAB 4}")
send ("{ENTER}")
sleep(600)
send("{ASC 83}")//this sends the five characters "START" while in the PuTTY console
send("{ASC 84}")
send("{ASC 65}")
send("{ASC 82}")
send("{ASC 84}")
send("{ENTER}")
sleep(3000)
winclose("COM3 - PuTTY")//closes PuTTY.exe
sleep(2000)
send("{ENTER}")
我尝试过使用ControlSend,但这根本不起作用。
这是我用来让任务调度程序运行putty.exe而不是打开它的命令:
cmd /c start "" "C:\Users\Bobby\Documents\runputty.au3"
答案 0 :(得分:0)
我使用此代码(第一次必须手动登录并确认服务器指纹):
Func _runSshCommand($plinkUser, $plinkHost, $command, $password = "", $timeoutInMs = 0)
$plinkFile = "c:\putty\plink.exe"
$runThis = @ComSpec & " /c " & $plinkFile & " -batch " & $plinkUser & "@" & $plinkHost
If $password <> "" Then $runThis &= " -pw " & $password
$runThis &= " " & $command
$plinkHandle = Run($runThis, "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)
$plinkFeedback = ""
$waitForOutputStartTime = _Timer_Init()
Do
Sleep(10)
$plinkFeedback &= StdoutRead($plinkHandle)
$stdoutReadError = @error
Until $stdoutReadError Or ($timeoutInMs And _Timer_Diff($waitForOutputStartTime) > $timeoutInMs)
If ProcessExists("plink.exe") Then ProcessClose("plink.exe")
If $stdoutReadError <> 0 Then Return $plinkFeedback
EndFunc ;==>_runSshCommand
详情请访问此主题AutoIt Plink Wrapper。 祝你今天愉快! :)
答案 1 :(得分:0)
我已经解决了我的问题:在重新安装了多产的串口线程驱动程序然后重新配置了我的controlsend语句后,它运行了。