Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSsh
    Integer iChannelNum
    String sTemp1

    Move False To iSuccess

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatSsh)) To hoSsh
    If (Not(IsComObjectCreated(hoSsh))) Begin
        Send CreateComObject of hoSsh
    End

    Get ComConnect Of hoSsh "172.16.16.16" 22 To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Authenticate using login/password:
    Get ComAuthenticatePw Of hoSsh "myLogin" "myPassword" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Start a shell session.
    // (The QuickShell method was added in Chilkat v9.5.0.65)
    Get ComQuickShell Of hoSsh To iChannelNum
    If (iChannelNum < 0) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // 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]: 

    Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum "Select Menu Number" "utf-8" True To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Show what we received so far:
    Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1
    Showln sTemp1

    // Send "4" <RETURN> to mimic typing in a shell session.
    Get ComChannelSendString Of hoSsh iChannelNum "4" + (character(10)) "utf-8" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // We should get a "console>" prompt.
    Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum "console>" "utf-8" True To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1
    Showln sTemp1

    // Send a command and get the output..
    Get ComChannelSendString Of hoSsh iChannelNum "dnslookup host google.com" + (character(10)) "utf-8" To iSuccess
    Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum "console>" "utf-8" True To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1
    Showln sTemp1

    // Send another command and get the output, and so on...
    Get ComChannelSendString Of hoSsh iChannelNum "dnslookup host microsoft.com" + (character(10)) "utf-8" To iSuccess
    Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum "console>" "utf-8" True To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoSsh To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1
    Showln sTemp1

    Send ComDisconnect To hoSsh


End_Procedure