Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) SSH to Cisco Switch - Processing "More" ResponsesDemonstrates connecting to a Cisco switch, running a command to enable privileged mode, then running a command to get a paged response requiring the SPACE char to be sent to process "--More--".
Use ChilkatAx-win32.pkg Procedure Test Handle hoSsh Boolean iSuccess Integer iChannelNum Variant vSaMatch Handle hoSaMatch Handle hoSbReceived Boolean iMoreComing String sTemp1 Boolean bTemp1 // 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 "SSH_SERVER_DOMAIN_OR_IP_ADDRESS" 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. Get ComQuickShell Of hoSsh To iChannelNum If (iChannelNum < 0) Begin Get ComLastErrorText Of hoSsh To sTemp1 Showln sTemp1 Procedure_Return End // If the CISCO switch returns a prompt with ">", then read until we get the prompt. // (It's not actually required that we do this, but it helps to know that all is OK at this point..) Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum ">" "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 the "ena" command to enable privileged mode. // (For the Cisco switch, terminate command with a single CR char.) Get ComChannelSendString Of hoSsh iChannelNum "ena" + (character(13)) "utf-8" To iSuccess // Assume success for this example to make it shorter.. // Read to the "Password:" prompt. Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum "Password:" "utf-8" True To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoSsh To sTemp1 Showln sTemp1 Procedure_Return End // Show what we received... Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1 Showln sTemp1 // Send the password. Get ComChannelSendString Of hoSsh iChannelNum "MY_PASSWORD_FOR_ELEVATED_PRIVILEGE" + (character(13)) "utf-8" To iSuccess // The prompt now changes from "Something>" to "Something#> // Read until the new prompt.. Get ComChannelReceiveUntilMatch Of hoSsh iChannelNum "#" "utf-8" True To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoSsh To sTemp1 Showln sTemp1 Procedure_Return End // Show what we received... Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1 Showln sTemp1 // Send the "show running-config" command. // The response will be in multiple pages, each ending with "--More--" and requiring a SPACE bar to be sent // to get the next page. Get ComChannelSendString Of hoSsh iChannelNum "show running-config" + (character(13)) "utf-8" To iSuccess // Consume the response until we end with another prompt. Get Create (RefClass(cComCkStringArray)) To hoSaMatch If (Not(IsComObjectCreated(hoSaMatch))) Begin Send CreateComObject of hoSaMatch End // Change "YOUR_PROMPT" to your actual prompt. We don't want to check for only "#" because // it's not specific enough. The data in the response could contain the "#" char... Get ComAppend Of hoSaMatch "YOUR_PROMPT#" To iSuccess Get ComAppend Of hoSaMatch "--More--" To iSuccess Get Create (RefClass(cComChilkatStringBuilder)) To hoSbReceived If (Not(IsComObjectCreated(hoSbReceived))) Begin Send CreateComObject of hoSbReceived End Move True To iMoreComing While (iMoreComing = True) Get pvComObject of hoSaMatch to vSaMatch Get ComChannelReceiveUntilMatchN Of hoSsh iChannelNum vSaMatch "utf-8" True To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoSsh To sTemp1 Showln sTemp1 Procedure_Return End Move False To iMoreComing Send ComClear To hoSbReceived Get ComGetReceivedText Of hoSsh iChannelNum "utf-8" To sTemp1 Get ComAppend Of hoSbReceived sTemp1 To iSuccess Get ComGetAsString Of hoSbReceived To sTemp1 Showln sTemp1 Get ComContains Of hoSbReceived "--More--" True To bTemp1 If (bTemp1 = True) Begin Move True To iMoreComing // Send a SPACE char just as if we were interactively pressing the SPACE key to get more output. Get ComChannelSendString Of hoSsh iChannelNum " " "utf-8" To iSuccess End Loop Send ComDisconnect To hoSsh End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.