security-scripts/ssh/zoni-cli/ipmi.py

106 lines
2.7 KiB
Python
Raw Normal View History

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# $Id$
#
import sys
import os
from systemmanagementinterface import SystemManagementInterface
#class systemmagement():
#def __init__(self, proto):
#self.proto = proto
class Ipmi(SystemManagementInterface):
def __init__(self, host, user, password):
self.host = host + "-ipmi"
self.password = password
self.user = user
self.powerStatus = None
self.verbose = False
self.ipmicmd = "ipmitool -I lanplus -U" + self.user + " -H" + self.host + \
" -P " + self.password + " "
def setVerbose(self, verbose):
self.verbose = verbose
def getPowerStatus(self):
if self.verbose:
print self.ipmicmd
cmd = self.ipmicmd + "chassis power status"
a = os.popen(cmd)
output = a.read()
print "%s\n%s" % (self.host, output)
if "off" in output:
self.powerStatus = 0
if "on" in output:
self.powerStatus = 1
if "Unable" in output:
print "unable to get the status"
self.powerStatus = 0
return output
#return a.read()
#for line in a.readlines():
#print line
def isPowered(self):
if self.powerStatus == None:
self.getPowerStatus()
if self.powerStatus:
return 1;
if not self.powerStatus:
return 0;
def powerOn(self):
cmd = self.ipmicmd + "chassis power on"
a = os.popen(cmd)
output = a.read()
print "output is ", output
def powerOff(self):
cmd = self.ipmicmd + "chassis power off"
a = os.popen(cmd)
output = a.read()
print "output is ", output
def powerCycle(self):
cmd = self.ipmicmd + "chassis power cycle"
a = os.popen(cmd)
output = a.read()
print "output is ", output
def powerReset(self):
cmd = self.ipmicmd + "chassis power reset"
a = os.popen(cmd)
output = a.read()
print "output is ", output
def activateConsole(self):
cmd = self.ipmicmd + "sol activate"
a = os.popen(cmd)
output = a.read()
print "output is ", output
#ipmitool -I lanplus -E -H r2r1c3b0-ipmi -U root chassis power status