加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Python-ipmi

(2011-07-01 11:07:37)
标签:

python

impi

it

分类: Python

#python写的ipmi管理脚本,ipmi ip信息列表 /etc/ipmi_list

#!/usr/bin/python
from os import path,system
import sys,getpass
ipmi_list="/etc/impi_list"

#logging's usage:logger.error(message),logger.info(message)
def initlog():
        import logging
        logger = logging.getLogger()
        hdlr = logging.FileHandler(logfile)
        formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        hdlr.setFormatter(formatter)
        logger.addHandler(hdlr)
        logger.setLevel(logging.NOTSET)
        return logger
logfile=__file__.replace(r'.py','.log')
logger=initlog()

command_list=["status","start","stop","log","passwd"]

def status(ip,password):
    try:
        system("echo %s && ipmitool -I lan -H %s -U root -P '%s' power status "%(ip,ip,password))
    except OSError,error:
        logging.error(error)

def start(ip,password):
    try:
        system("echo %s && ipmitool -I lan -H %s -U root -P '%s' power on "%(ip,ip,password))
    except OSError,error:
        logging.error(error)

def stop(ip,password):
    try:
        system("echo %s && ipmitool -I lan -H %s -U root -P '%s' power off "%(ip,ip,password))
    except OSError,error:
        logging.error(error)

def log(ip,password):
    try:
        system("echo %s && ipmitool -I lan -H %s -U root -P '%s' sel list"%(ip,ip,password))
    except OSError,error:
        logging.error(error)

def passwd(ip,password):
    global newpassword
    if newpassword == "":
        newpassword = getpass.getpass("Please input new password:")
    try:
        system("echo %s && ipmitool -I lan -H %s -U root -P '%s' user set password 2 '%s'"%(ip,ip,password,newpassword))
        print "new password is %s"%(newpassword)
    except OSError,error:
        logging.error(error)

#main
if len(sys.argv)<3:
    print 'Script format:%s command password'%(sys.argv[0])
    print """passowrd startwith ' and endwith '"""
    sys.exit()

if sys.argv[1] in command_list:
    command = str(sys.argv[1])
    global newpassword
    newpassword = ""
else:
    print "command %s does not exist"%(sys.argv[1])
    print """command_list:[start|stop|status|log|passwd]
             start:power on
             stop:power off
             status:power status
             log:system event log
             passwd:change root's password """
    sys.exit()

if not path.isfile(ipmi_list):
    print "file:%s does not exist!"%(ipmi_list)
    sys.exit()
else:
    f = file(ipmi_list)
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        else:
            ip = str(line[:-1])
            password = str(sys.argv[2])
            eval_r(command)(ip,password)
    f.close()

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有