PureBasic
PureBasic
SSH Commands to Sophos Router Device Console
See more SSH Examples
Demonstrates how to establish an SSH session with a Sophos XG router and send commands in a device console session.Chilkat PureBasic Downloads
IncludeFile "CkSsh.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
ssh.i = CkSsh::ckCreate()
If ssh.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkSsh::ckConnect(ssh,"172.16.16.16",22)
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; Authenticate using login/password:
success = CkSsh::ckAuthenticatePw(ssh,"myLogin","myPassword")
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; Start a shell session.
; (The QuickShell method was added in Chilkat v9.5.0.65)
channelNum.i = CkSsh::ckQuickShell(ssh)
If channelNum < 0
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; The Sophos router will send this initial prompt:
; Main Menu
;
; 1. Network Configuration
; 2. System Configuration
; 3. Route Configuration
; 4. Device Console
; 5. Device Management
; 6. VPN Management
; 7. Shutdown/Reboot Device
; 0. Exit
;
; Select Menu Number [0-7]:
success = CkSsh::ckChannelReceiveUntilMatch(ssh,channelNum,"Select Menu Number","utf-8",1)
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; Show what we received so far:
Debug CkSsh::ckGetReceivedText(ssh,channelNum,"utf-8")
; Send "4" <RETURN> to mimic typing in a shell session.
success = CkSsh::ckChannelSendString(ssh,channelNum,"4" + Chr(10),"utf-8")
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; We should get a "console>" prompt.
success = CkSsh::ckChannelReceiveUntilMatch(ssh,channelNum,"console>","utf-8",1)
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
Debug CkSsh::ckGetReceivedText(ssh,channelNum,"utf-8")
; Send a command and get the output..
success = CkSsh::ckChannelSendString(ssh,channelNum,"dnslookup host google.com" + Chr(10),"utf-8")
success = CkSsh::ckChannelReceiveUntilMatch(ssh,channelNum,"console>","utf-8",1)
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
Debug CkSsh::ckGetReceivedText(ssh,channelNum,"utf-8")
; Send another command and get the output, and so on...
success = CkSsh::ckChannelSendString(ssh,channelNum,"dnslookup host microsoft.com" + Chr(10),"utf-8")
success = CkSsh::ckChannelReceiveUntilMatch(ssh,channelNum,"console>","utf-8",1)
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
Debug CkSsh::ckGetReceivedText(ssh,channelNum,"utf-8")
CkSsh::ckDisconnect(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndProcedure