mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-31 19:08:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python3
 | |
| """
 | |
| Date: 15-09-2021
 | |
| By: Amrit Raj @ Candela Technologies Pvt. ltd.
 | |
| Note: Please ensure that PDU is powered on
 | |
|     Command line to be used as
 | |
|     python pdu_automation.py --host 192.168.200.49 --user admin --password pass1234 --action on/off/cycle --port all/specific_port_number
 | |
|     Eg 1: python pdu_v3.py --host 192.168.200.49 --user admin --password pass1234 --action off --port 1
 | |
|     Eg 2: python pdu_v3.py --host 192.168.200.49 --user admin --password pass1234 --action off --port 1,2,3,4
 | |
|     Eg 3: python pdu_v3.py --host 192.168.200.49 --user admin --password pass1234 --action cycle --port all
 | |
| """
 | |
| import os
 | |
| import json
 | |
| import time
 | |
| import argparse
 | |
| from typing import Sequence
 | |
| from typing import Optional
 | |
| 
 | |
| try:
 | |
|     import dlipower
 | |
| except:
 | |
|     print('Please wait we are installing DLI Power')
 | |
|     os.system('pip install dlipower')
 | |
| 
 | |
| 
 | |
| class setup:
 | |
|     try:
 | |
|         def __init__(self, hostname, user, password):
 | |
|             self.hostname = hostname
 | |
|             self.user = user
 | |
|             self.password = password
 | |
|             self.power_switch = dlipower.PowerSwitch(hostname=self.hostname, userid=self.user, password=self.password)
 | |
|     except:
 | |
|         print('PDU device is Off')
 | |
| 
 | |
| 
 | |
| class switch_on(setup):
 | |
|     def __init__(self, hostname, user, password, port=None):
 | |
|         super().__init__(hostname, user, password)
 | |
|         self.port = port
 | |
|         if self.port != 'all':
 | |
|             try:
 | |
|                 port = str(self.port).split(",")
 | |
|                 for i in port:
 | |
|                     self.power_switch[int(i)-1].state  = "ON"
 | |
|             except:
 | |
|                 self.power_switch[int(self.port)-1].state  = "ON"
 | |
|         else:
 | |
|             for outlet in self.power_switch:
 | |
|                 outlet.state = 'ON'
 | |
| 
 | |
| 
 | |
| class switch_off(setup):
 | |
|     def __init__(self, hostname, user, password, port=None):
 | |
|         super().__init__(hostname, user, password)
 | |
|         self.port = port
 | |
|         if self.port != 'all':
 | |
|             try:
 | |
|                 port = str(self.port).split(",")
 | |
|                 for i in port:
 | |
|                     self.power_switch[int(i) - 1].state = "OFF"
 | |
|             except:
 | |
|                 self.power_switch[int(self.port) - 1].state = "OFF"
 | |
|         else:
 | |
|             for outlet in self.power_switch:
 | |
|                 outlet.state = 'ON'
 | |
| 
 | |
| 
 | |
| class print_status(setup):
 | |
|     def __init__(self, hostname, user, password):
 | |
|         super().__init__(hostname, user, password)
 | |
|         print(self.power_switch)
 | |
| 
 | |
| 
 | |
| def main(argv: Optional[Sequence[str]] = None):
 | |
|     parser = argparse.ArgumentParser()
 | |
|     parser.add_argument('--host', help='Please provide host name eg: 192.168.200.65')
 | |
|     parser.add_argument('--username', help='Please provide username eg: admin')
 | |
|     parser.add_argument('--password', help='Please provide password eg: 1234')
 | |
|     parser.add_argument('--action', help='Switches all Outlets in ON Mode eg: --on or --off\n')
 | |
|     parser.add_argument('--port', help='Please provide port name eg: --port lanforge')
 | |
|     args = parser.parse_args(argv)
 | |
|     dic = vars(args)
 | |
|     # if user enter ports as  1,6,7
 | |
|     # port = [1,6,7]
 | |
|     # print(dic)
 | |
|     if dic['action'] == 'on':
 | |
|         set = setup(dic['host'], dic['username'], dic['password'])
 | |
|         on = switch_on(dic['host'], dic['username'], dic['password'], dic['port'])
 | |
|     elif dic['action'] == 'off':
 | |
|         set = setup(dic['host'], dic['username'], dic['password'])
 | |
|         # for single in port
 | |
|         off = switch_off(dic['host'], dic['username'], dic['password'], dic['port'])
 | |
|         # off = switch_on(dic['action'])
 | |
|     elif dic['action'] == 'cycle':
 | |
|         set = setup(dic['host'], dic['username'], dic['password'])
 | |
|         on = switch_off(dic['host'], dic['username'], dic['password'], dic['port'])
 | |
|         off = switch_on(dic['host'], dic['username'], dic['password'], dic['port'])
 | |
|     else:
 | |
|         print('Command not found')
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main() | 
