41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import telnetlib, threading, time
|
|
|
|
# Controls Server Technology CW-16V1-C20M switched CDUs over Telnet
|
|
# Opens a new connection for every command to
|
|
# avoid threading and address space conflicts
|
|
|
|
class PowerStrip():
|
|
def __init__(self, host, user='admn', password='admn'):
|
|
self.host = host
|
|
self.user = user
|
|
self.password = password
|
|
|
|
def reboot(self, outlet, delay=0):
|
|
self.command('reboot', outlet, delay)
|
|
|
|
def off(self, outlet, delay=0):
|
|
self.command('off', outlet, delay)
|
|
|
|
def on(self, outlet, delay=0):
|
|
self.command('on', outlet, delay)
|
|
|
|
def command(self, command, outlet=1, delay=0):
|
|
if delay == 0:
|
|
self._do_command(command, outlet)
|
|
else:
|
|
threading.Timer(delay, self._do_command, (command, outlet)).start()
|
|
|
|
def _do_command(self, command, outlet=1):
|
|
tn = telnetlib.Telnet(self.host)
|
|
tn.read_until('Username: ')
|
|
tn.write(self.user + '\n')
|
|
tn.read_until('Password: ')
|
|
tn.write(self.password + '\n')
|
|
tn.read_until('Switched CDU: ')
|
|
tn.write('%s .a%d\n' % (command, outlet))
|
|
tn.read_some()
|
|
tn.close()
|