1*** Settings *** 2Documentation Cyber Power Distribution Unit (PDU) library 3 4Resource ../../lib/pdu/pdu.robot 5Library Telnet 6Library SSHLibrary 7 8*** Keywords *** 9Login To Cyber PDU Via SSH 10 [Documentation] Open PDU connection and login via SSH. 11 12 Validate Prereq 13 SSHLibrary.Open Connection ${PDU_IP} 14 ${connection_status}= Run Keyword And Return Status 15 ... SSHLibrary.Login ${PDU_USERNAME} ${PDU_PASSWORD} 16 Return From Keyword ${connection_status} 17 18 19Login To Cyber PDU Via Telnet 20 [Documentation] Open PDU connection and login via telnet. 21 22 # CyberPowerSystems Inc., Command Shell v1.0 23 # Login Name: cyber 24 # Login_Pass: cyber 25 26 Validate Prereq 27 Telnet.Open Connection ${PDU_IP} timeout=5 28 Set Telnetlib Log Level TRACE 29 Telnet.Set Newline \r 30 Telnet.Write \n 31 Telnet.Write ${PDU_USERNAME} 32 33 Telnet.Read Until Login_Pass: 34 Telnet.Write ${PDU_PASSWORD} 35 36Power Cycle 37 [Documentation] Perform PDU power cycle. 38 [Teardown] Run Keyword ${lib_name}.Close All Connections 39 40 ${connection_status}= Login To Cyber PDU Via SSH 41 42 IF '${connection_status}' == '${False}' 43 Set Test Variable ${lib_name} Telnet 44 Login To Cyber PDU Via Telnet 45 ELSE 46 Set Test Variable ${lib_name} SSHLibrary 47 END 48 49 #Sample output from cyber PDU console 50 51 # CyberPower System ePDU Firmware Version 2.210 52 # (c) Copyright 2010 All Rights Reserved PDU30SWHVT16FNET 53 # +------- Information -------------------------------------------------------+ 54 # Name : PDU30SWHVT16FNET Date : 07/05/2022 55 # Contact : Administrator Time : 22:01:49 56 # Location : Server Room User : Admin 57 # Up Time : 178 days 22 hours 29 mins 11 secs. 58 # +------- Console -----------------------------------------------------------+ 59 60 # 1- Device Manager 61 # 2- Network Settings 62 # 3- System 63 # 4- Logout 64 65 # <ESC>- Back, <ENTER>- Select&Reflash 66 # > 1 67 68 # +------- PDU30SWHVT16FNET --------------------------------------------------+ 69 70 # EPDU Information 71 # ----------------------------------------------------------------------- 72 # Meter or Switch : Switched Model Enclosure : 2U 73 # EPDU Orientation : Horizontal Circuit Breaker : Yes 74 # Bank Number : 2 Outlet Number : 16 75 # ----------------------------------------------------------------------- 76 77 # 1- Load Manager 78 # 2- Outlet Control 79 # 3- Outlet Configuration 80 # 4- Outlet User Management 81 # 5- See Schedule 82 83 # <ESC>- Back, <ENTER>- Select&Reflash 84 # > 2 85 86 # +------- Outlet Control ----------------------------------------------------+ 87 88 # Outlet Status: 89 # --------------------------------------------------------------------- 90 # Outlet Number : 1 2 3 4 5 6 7 8 9 10 11 12 91 # Current State : ON ON ON ON ON ON ON ON ON ON ON ON 92 # --------------------------------------------------------------------- 93 # Outlet Number : 13 14 15 16 17 18 19 20 21 22 23 24 94 # Current State : ON ON ON ON 95 96 # 1- Start a Control Command 97 98 # <ESC>- Back, <ENTER>- Select&Reflash 99 # > 1 100 101 # +------- Command Information: Step 1 ---------------------------------------+ 102 103 # Step1. Input a Single outlet or outlet list with outlet index #. 104 # Note. Separate by symbol ','. 105 106 # <ESC>- Cancel 107 # > 13, 14 108 109 # +------- Command Information: Step 2 ---------------------------------------+ 110 111 # Selected Outlet: 112 # 16 113 114 # Step2. Select command to execute 115 # Selection: 116 # 1- Turn On Immediate 117 # 2- Turn Off Immediate 118 # 3- Reboot Immediate 119 # 4- Turn On Delay 120 # 5- Turn Off Delay 121 # 6- Reboot Delay 122 # 7- Cancel Pending Command 123 124 # <ESC>- Cancel 125 # > 126 127 # +------- Command Information: Step 3 ---------------------------------------+ 128 129 # Selected Outlet: 130 # 16 131 132 # with Command: 133 # Cancel Pending Command 134 135 # Step3. Confirm your command. 136 # Note. Input 'yes' to Execute. 137 138 # <ESC>- Cancel 139 # > yes 140 141 # Select 1- Device Manager 142 Run Keyword ${lib_name}.Read 143 Run Keyword ${lib_name}.Write 1 144 145 # Select 2- Outlet Control 146 Run Keyword ${lib_name}.Read 147 Run Keyword ${lib_name}.Write 2 148 149 @{outlets}= Split String ${PDU_SLOT_NO} separator=, 150 FOR ${outlet} IN @{outlets} 151 # Select 1- Start a Control Command 152 Run Keyword ${lib_name}.Read 153 Run Keyword ${lib_name}.Write 1 154 155 # Input a Single outlet or outlet list with outlet index # 156 Run Keyword ${lib_name}.Read 157 Run Keyword ${lib_name}.Write ${outlet} 158 159 # Select command to execute 3- Reboot Immediate 160 Run Keyword ${lib_name}.Read 161 Run Keyword ${lib_name}.Write 3 162 163 # Input 'yes' to Execute 164 Run Keyword ${lib_name}.Read 165 Run Keyword ${lib_name}.Write yes 166 Run Keyword ${lib_name}.Read 167 END 168 169 # Send ESC over telnet console and Select 4- Logout 170 ${esc}= Evaluate chr(int(27)) 171 Set Test Variable ${retry_count} ${10} 172 FOR ${try} IN RANGE ${retry_count} 173 Run Keyword ${lib_name}.Write Bare ${esc} 174 ${cmd_out}= Run Keyword ${lib_name}.Read 175 ${check}= Run Keyword And Return Status Should Contain ${cmd_out} 4- Logout 176 Continue For Loop If ${check}==${FALSE} 177 Run Keyword If ${check}==${TRUE} Run Keywords 178 ... Run Keyword ${lib_name}.Write 4 AND 179 ... Run Keyword ${lib_name}.Read AND 180 ... ${lib_name}.Close All Connections AND 181 ... Exit For Loop 182 END