AutoIt
AutoIt
SSH Parallel Remote Commands on Single Server
See more SSH Examples
Shows how to execute multiple commands in parallel on a single SSH server and retrieve the command output for each.Chilkat AutoIt Downloads
Local $bSuccess = False
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
$oSsh = ObjCreate("Chilkat.Ssh")
Local $iPort = 22
$bSuccess = $oSsh.Connect("the-ssh-server.com",$iPort)
If ($bSuccess <> True) Then
ConsoleWrite($oSsh.LastErrorText & @CRLF)
Exit
EndIf
; Authenticate using login/password:
$bSuccess = $oSsh.AuthenticatePw("theSshLogin","theSshPassword")
If ($bSuccess <> True) Then
ConsoleWrite($oSsh.LastErrorText & @CRLF)
Exit
EndIf
; Start several commands on the server.
Local $iChannel1 = $oSsh.QuickCmdSend("df")
If ($iChannel1 < 0) Then
ConsoleWrite($oSsh.LastErrorText & @CRLF)
Exit
EndIf
Local $iChannel2 = $oSsh.QuickCmdSend("date")
If ($iChannel2 < 0) Then
ConsoleWrite($oSsh.LastErrorText & @CRLF)
Exit
EndIf
Local $iChannel3 = $oSsh.QuickCmdSend("echo hello world")
If ($iChannel3 < 0) Then
ConsoleWrite($oSsh.LastErrorText & @CRLF)
Exit
EndIf
; Now collect the results of each command.
Local $iPollTimeoutMs = 50
Local $iNumFinished = 0
While $iNumFinished < 3
; Check to see if anything has finished.
; QuickCmdCheck returns -1 if there are no errors and nothing else finished
; QuickCmdCheck returns -2 if there was an error (such as a lost connection)
; QuickCmdCheck returns a channel number if a channel finished.
Local $iChannel = $oSsh.QuickCmdCheck($iPollTimeoutMs)
If ($iChannel = -2) Then
ConsoleWrite($oSsh.LastErrorText & @CRLF)
Exit
EndIf
If ($iChannel >= 0) Then
ConsoleWrite("---- channel " & $iChannel & " finished ----" & @CRLF)
ConsoleWrite($oSsh.GetReceivedText($iChannel,"ansi") & @CRLF)
$iNumFinished = $iNumFinished + 1
EndIf
Wend
; --------------
; Sample output:
; ---- channel 105 finished ----
; hello world
;
; ---- channel 104 finished ----
; Thu Dec 22 17:43:58 CST 2016
;
; ---- channel 103 finished ----
; Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
; /dev/disk2 2176716032 265739728 1910464304 13% 33281464 238808038 12% /
; devfs 382 382 0 100% 662 0 100% /dev
; map -hosts 0 0 0 100% 0 0 100% /net
; map auto_home 0 0 0 100% 0 0 100% /home
; /dev/disk3s2 374668 374668 0 100% 93665 0 100% /Volumes/Google Chrome