如何在锁定的终端上编写AutoIt脚本

时间:2015-03-27 10:45:41

标签: task scheduler putty autoit

我遇到了一个问题,我使用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"

2 个答案:

答案 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语句后,它运行了。