*** Settings *** Documentation Cyber Power Distribution Unit (PDU) library Resource ../../lib/pdu/pdu.robot Library Telnet Library SSHLibrary *** Keywords *** Login To Cyber PDU Via SSH [Documentation] Open PDU connection and login via SSH. Validate Prereq SSHLibrary.Open Connection ${PDU_IP} ${connection_status}= Run Keyword And Return Status ... SSHLibrary.Login ${PDU_USERNAME} ${PDU_PASSWORD} Return From Keyword ${connection_status} Login To Cyber PDU Via Telnet [Documentation] Open PDU connection and login via telnet. # CyberPowerSystems Inc., Command Shell v1.0 # Login Name: cyber # Login_Pass: cyber Validate Prereq Telnet.Open Connection ${PDU_IP} timeout=5 Set Telnetlib Log Level TRACE Telnet.Set Newline \r Telnet.Write \n Telnet.Write ${PDU_USERNAME} Telnet.Read Until Login_Pass: Telnet.Write ${PDU_PASSWORD} Power Cycle [Documentation] Perform PDU power cycle. [Teardown] Run Keyword ${lib_name}.Close All Connections ${connection_status}= Login To Cyber PDU Via SSH IF '${connection_status}' == '${False}' Set Test Variable ${lib_name} Telnet Login To Cyber PDU Via Telnet ELSE Set Test Variable ${lib_name} SSHLibrary END #Sample output from cyber PDU console # CyberPower System ePDU Firmware Version 2.210 # (c) Copyright 2010 All Rights Reserved PDU30SWHVT16FNET # +------- Information -------------------------------------------------------+ # Name : PDU30SWHVT16FNET Date : 07/05/2022 # Contact : Administrator Time : 22:01:49 # Location : Server Room User : Admin # Up Time : 178 days 22 hours 29 mins 11 secs. # +------- Console -----------------------------------------------------------+ # 1- Device Manager # 2- Network Settings # 3- System # 4- Logout # - Back, - Select&Reflash # > 1 # +------- PDU30SWHVT16FNET --------------------------------------------------+ # EPDU Information # ----------------------------------------------------------------------- # Meter or Switch : Switched Model Enclosure : 2U # EPDU Orientation : Horizontal Circuit Breaker : Yes # Bank Number : 2 Outlet Number : 16 # ----------------------------------------------------------------------- # 1- Load Manager # 2- Outlet Control # 3- Outlet Configuration # 4- Outlet User Management # 5- See Schedule # - Back, - Select&Reflash # > 2 # +------- Outlet Control ----------------------------------------------------+ # Outlet Status: # --------------------------------------------------------------------- # Outlet Number : 1 2 3 4 5 6 7 8 9 10 11 12 # Current State : ON ON ON ON ON ON ON ON ON ON ON ON # --------------------------------------------------------------------- # Outlet Number : 13 14 15 16 17 18 19 20 21 22 23 24 # Current State : ON ON ON ON # 1- Start a Control Command # - Back, - Select&Reflash # > 1 # +------- Command Information: Step 1 ---------------------------------------+ # Step1. Input a Single outlet or outlet list with outlet index #. # Note. Separate by symbol ','. # - Cancel # > 13, 14 # +------- Command Information: Step 2 ---------------------------------------+ # Selected Outlet: # 16 # Step2. Select command to execute # Selection: # 1- Turn On Immediate # 2- Turn Off Immediate # 3- Reboot Immediate # 4- Turn On Delay # 5- Turn Off Delay # 6- Reboot Delay # 7- Cancel Pending Command # - Cancel # > # +------- Command Information: Step 3 ---------------------------------------+ # Selected Outlet: # 16 # with Command: # Cancel Pending Command # Step3. Confirm your command. # Note. Input 'yes' to Execute. # - Cancel # > yes # Select 1- Device Manager Run Keyword ${lib_name}.Read Run Keyword ${lib_name}.Write 1 # Select 2- Outlet Control Run Keyword ${lib_name}.Read Run Keyword ${lib_name}.Write 2 @{outlets}= Split String ${PDU_SLOT_NO} separator=, FOR ${outlet} IN @{outlets} # Select 1- Start a Control Command Run Keyword ${lib_name}.Read Run Keyword ${lib_name}.Write 1 # Input a Single outlet or outlet list with outlet index # Run Keyword ${lib_name}.Read Run Keyword ${lib_name}.Write ${outlet} # Select command to execute 3- Reboot Immediate Run Keyword ${lib_name}.Read Run Keyword ${lib_name}.Write 3 # Input 'yes' to Execute Run Keyword ${lib_name}.Read Run Keyword ${lib_name}.Write yes Run Keyword ${lib_name}.Read END # Send ESC over telnet console and Select 4- Logout ${esc}= Evaluate chr(int(27)) Set Test Variable ${retry_count} ${10} FOR ${try} IN RANGE ${retry_count} Run Keyword ${lib_name}.Write Bare ${esc} ${cmd_out}= Run Keyword ${lib_name}.Read ${check}= Run Keyword And Return Status Should Contain ${cmd_out} 4- Logout Continue For Loop If ${check}==${FALSE} Run Keyword If ${check}==${TRUE} Run Keywords ... Run Keyword ${lib_name}.Write 4 AND ... Run Keyword ${lib_name}.Read AND ... ${lib_name}.Close All Connections AND ... Exit For Loop END