ipmitool批量添加新用戶名和密碼


Intelligent Platform Management Interface 

需求:已知BMC帳號id2為root管理員帳號,添加id5bmc帳號

工具:ipmitool version 1.8.14

系統:CentOS release 6.6 (Final)

1,通過yum安裝ipmitool安裝源

[root@zxl]# yum install ipmitool
已加載插件:fastestmirror, security
設置安裝進程
Loading mirror speeds from cached hostfile
解決依賴關系
--> 執行事務檢查
---> Package ipmitool.x86_64 0:1.8.11-20.el6 will be 升級
---> Package ipmitool.x86_64 0:1.8.11-21.el6 will be an update
--> 完成依賴關系計算

依賴關系解決

==============================================================================================================
 軟件包                   架構                   版本                           倉庫                     大小
==============================================================================================================
正在升級:
 ipmitool                 x86_64                 1.8.11-21.el6                  updates                 463 k

事務概要
==============================================================================================================
Upgrade       1 Package(s)

總下載量:463 k
確定嗎?[y/N]:y

2,新建ip.csv文件,將BMC的IP(第一列)、ID 2的用戶名(第二列)、ID2的密碼(第三列)、ID5的用戶名(第四列)、ID5的密碼(第五列)

bmc_ip,bmc_user1,bmc_pass1,bmc_user2,bmc_pass2
10.27
.11.86,admin,admin,bmc,calvin 10.27.11.17,admin,admin,bmc,calvin 10.27.11.68,admin,admin,bmc,calvin

3,新建bmc_adduser_id5_bmc.sh文件

#!/bin/bash
VERSION=0.0.1
MODIFY_DATE=20170824

#判斷當前bmc是否是活的
function judgeActive()
{
    res=`ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD mc info`
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR not available"
        return 1
    fi
    echo "ip:$IP_ADDR is available"
    return 0
}

#獲取user1用戶的userid
function judgeUserID()
{
    USER_ID=`ipmitool -H $IP_ADDR -U $USER_NAME -P $PASSWD -I lanplus user list | grep " $USER_NAME " | awk '{print $1}'`
    if [ $? -ne 0 ]
    then
        return 1
    fi
    return 0
}

#判斷user2是否是活的
function checkNewUser()
{
    res=`ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME2 -P $PASSWD2 mc info`
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME2 $PASSWD2 not available"
        return 1
    fi
    echo "ip:$IP_ADDR $USER_NAME2 $PASSWD2 is available"
    return 0
}

#輸出幫助信息
function printHelp()
{
    echo "Usage:./bmc_adduser_id5_bmc_v2_170825.sh -i ipFile
      ipFile is bmc machine info file include ip username and password

      all info output file dump.csv"
}


#給id5增加用戶
function changeuser()
{
    CHANNEL1=1
    CHANNEL8=8
    BMCID=5
    
    #設置id5用戶名
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user set name $BMCID $USER_NAME2
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD user set name not available"
        return 1
    fi
    
    #設置id5密碼
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user set password $BMCID $PASSWD2
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD user set password not available"
        return 1
    fi
    
    #設置id5 channel1權限為administrator
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user priv $BMCID 4 $CHANNEL1
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD user priv $CHANNEL1 not available"
        return 1
    fi
    
    #設置id5 channel8權限為administrator
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user priv $BMCID 4 $CHANNEL8
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD user priv $CHANNEL8 not available"
        return 1
    fi
    
    #設置id5 channel1打開callin=on ipmi=true link=on privilege=4權限
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD channel setaccess $CHANNEL1 $BMCID callin=on ipmi=true link=on privilege=4
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD channel setaccess $CHANNEL1 not available"
        return 1
    fi
    
    #設置id5 channel8打開callin=on ipmi=true link=on privilege=4權限
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD channel setaccess $CHANNEL8 $BMCID callin=on ipmi=true link=on privilege=4
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD channel setaccess $CHANNEL8 not available"
        return 1
    fi
    
    #設置channel1的sol
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD sol payload enable $CHANNEL1 $BMCID
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD sol payload enable $CHANNEL1 not available"
        return 1
    fi
    
    #user2使能
    ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user enable $BMCID
    if [ $? -ne 0 ]
    then
        echo "ip:$IP_ADDR $USER_NAME $PASSWD user enable not available"
        return 1
    fi
    
    return 0
}

case $1 in
            -h|--help)
            printHelp
            exit 0
                ;;
    esac

#獲取shell腳本參數
while getopts ":i:" opt
do
    case $opt in
        i)
            IP_FILE=$OPTARG
            echo "ip file is "$IP_FILE
            ;;
        *) 
            echo "argument error"
            exit 1;;
    esac
done

#判斷參數是否合法
if [ ${#IP_FILE} -eq 0 ]
then
    echo "please assign ip file. detail info check -h"
    exit 0
fi

echo "IP,check_original_user,original_userID,change_user,check_new_user">dump.csv

declare -i i=0

#逐行讀取文件
for LINE in `cat $IP_FILE`;
do
{

    let i++
    
    if [ $i -eq 1 ]
    then
        continue
    fi

    #判斷文件行的大小,若長度小於10則認為非法
    if [ ${#LINE} -lt 10 ]
    then
        continue;
    fi
    
    #聲明變量並賦值
    IP_ADDR=`echo $LINE | awk -F, '{print $1}'`
    USER_NAME=`echo $LINE | awk -F, '{print $2}'`
    PASSWD=`echo $LINE  | awk -F, '{print $3}'`
    
    USER_NAME2=`echo $LINE | awk -F, '{print $4}'`
    PASSWD2=`echo $LINE  | awk -F, '{print $5}' | sed 's/\r//g'`
    
    #判斷bmc是否是活的
    judgeActive
    if [ $? -eq 1 ]
    then
        check_original_user="fail"
        echo "$IP_ADDR,$check_original_user,$original_userID,$change_user,$check_new_user">${IP_ADDR}.insdat
        continue
    else
        check_original_user="success"
    fi
    
    #判斷userid
    judgeUserID
    if [ $? -eq 1 ]
    then
        original_userID="get error"
        echo "$IP_ADDR,$check_original_user,$original_userID,$change_user,$check_new_user">${IP_ADDR}.insdat
        continue
    fi
    
    original_userID="is $USER_ID"
    
    #添加用戶
    changeuser
    if [ $? -eq 1 ]
    then
        change_user="fail"
        echo "$IP_ADDR,$check_original_user,$original_userID,$change_user,$check_new_user">${IP_ADDR}.insdat
        continue
    else
        change_user="success"
    fi
    
    #檢查新添加的用戶
    checkNewUser
    if [ $? -eq 1 ]
    then
        check_new_user="fail"
        echo "$IP_ADDR,$check_original_user,$original_userID,$change_user,$check_new_user">${IP_ADDR}.insdat
        continue
    else
        check_new_user="sucess"
    fi
    
    #輸出日志到日志文件
    echo "$IP_ADDR,$check_original_user,$original_userID,$change_user,$check_new_user">${IP_ADDR}.insdat

    echo "$IP_ADDR dump info over"
}
done

wait

#匯集日志信息
allfile=`ls *.insdat`
for file in $allfile
do
    cat $file >> dump.csv
done

#刪除單個的日志文件
rm -r *.insdat

echo "all dump info over"

 

4,執行./bmc_adduser_id5_bmc.sh -i ip.csv

ip:10.27.11.11 is available
ip:10.27.11.12 is available
ip:10.27.11.13 is available

5,執行完成后查看驗證文件cat dump.csv

10.27.11.11,success,,success,fail
10.27.11.12,success,,success,fail
10.27.11.13,success,,success,fail

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM