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.
MODIFY_DATE= #判断当前bmc是否是活的
function judgeActive()
{
res=`ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD mc info`
if [ $? -ne ]
then
echo "ip:$IP_ADDR not available"
return
fi
echo "ip:$IP_ADDR is available"
return
} #获取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 ]
then
return
fi
return
} #判断user2是否是活的
function checkNewUser()
{
res=`ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME2 -P $PASSWD2 mc info`
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME2 $PASSWD2 not available"
return
fi
echo "ip:$IP_ADDR $USER_NAME2 $PASSWD2 is available"
return
} #输出帮助信息
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=
CHANNEL8=
BMCID= #设置id5用户名
ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user set name $BMCID $USER_NAME2
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD user set name not available"
return
fi #设置id5密码
ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user set password $BMCID $PASSWD2
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD user set password not available"
return
fi #设置id5 channel1权限为administrator
ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user priv $BMCID $CHANNEL1
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD user priv $CHANNEL1 not available"
return
fi #设置id5 channel8权限为administrator
ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user priv $BMCID $CHANNEL8
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD user priv $CHANNEL8 not available"
return
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=
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD channel setaccess $CHANNEL1 not available"
return
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=
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD channel setaccess $CHANNEL8 not available"
return
fi #设置channel1的sol
ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD sol payload enable $CHANNEL1 $BMCID
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD sol payload enable $CHANNEL1 not available"
return
fi #user2使能
ipmitool -I lanplus -H $IP_ADDR -U $USER_NAME -P $PASSWD user enable $BMCID
if [ $? -ne ]
then
echo "ip:$IP_ADDR $USER_NAME $PASSWD user enable not available"
return
fi return
} case $ in
-h|--help)
printHelp
exit
;;
esac #获取shell脚本参数
while getopts ":i:" opt
do
case $opt in
i)
IP_FILE=$OPTARG
echo "ip file is "$IP_FILE
;;
*)
echo "argument error"
exit ;;
esac
done #判断参数是否合法
if [ ${#IP_FILE} -eq ]
then
echo "please assign ip file. detail info check -h"
exit
fi echo "IP,check_original_user,original_userID,change_user,check_new_user">dump.csv declare -i i= #逐行读取文件
for LINE in `cat $IP_FILE`;
do
{ let i++ if [ $i -eq ]
then
continue
fi #判断文件行的大小,若长度小于10则认为非法
if [ ${#LINE} -lt ]
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 ]
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 ]
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 ]
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 ]
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

ipmitool批量添加新用户名和密码的更多相关文章

  1. linux下批量添加新用户

    作为一个系统管理员,可能要经常的为机器添加用户,可能是在一台机器上添加很多用户,也有可能是在很多机器上要添加同一个用户. 基本上,批量添加用户有两种方式,一是用useradd + passwd命令配合 ...

  2. Ubuntu下添加Samba用户名与密码

    参考: ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录 增加samba用户提示Failed to add entry for user Ubuntu可以直接在 ...

  3. Shell 脚本批量添加用户和用户密码

    #!/bin/bash#批量添加用户 设置密码for i in `seq 1 10`do if ! id user$i &> /dev/null then useradd user$i ...

  4. 创建新用户,及用新用户名和密码登录--------------DCL

    创建用户基本语法:    creat user 用户名@"ip地址" identified by "密码" 登录数据库以后:用show databases; 显 ...

  5. Apache2 添加登陆用户名和密码

    1. 修改httpd.conf, 对要做认证的目录进行设置<Directory "/usr/local/var/www">   Options Indexes Foll ...

  6. windows Server 2008 R2 添加新用户时密码不满足密码策略的要求

    ---------------------------本地用户和组---------------------------在计算机 WINSERVER2008R2 上创建用户 lintx 时,出现了以下 ...

  7. tomcat添加管理后台的用户名和密码(为jenkins连接tomcat用)

    vim  ./conf/tomcat-users.xml <role rolename="admin"/> <role rolename="admin- ...

  8. 【转载】干货再次来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载八)用命令实现批量添加用户

    Windows添加用户需要至少5个界面,而Linux一条命令就搞定了,这是不是高效人士办公第一法则呢.本文不给你一堆参数和选项,不让你见识教条主义,只给你最实用的代码. 想每天能听到小妞的语音播报,想 ...

  9. windowsxp系统下SVN添加新用户

    以我部署的文件为例: 我在f盘下新建一个zzz文件夹将其部署为svn共享工程后,新来员工需要添加svn账号以获取工程. 总共三步begin: 1.进入工程文件夹ZZZ在里面有一个conf文件夹如图: ...

随机推荐

  1. week01—绪论

    一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算: 构造有理数T,元素e1,e2分别被赋以分子.分母值 销 ...

  2. 上一步是硬件描述语言,下一步是FPGA

    上一步是硬件描述语言,下一步是FPGA. 学习了硬件描述语言(Verilog或者VHDL)之后,FPGA该如何继续. 世上没有捷径,每一步都得踏踏实实的走.学习FPGA也是这样,在有了硬件描述语言的基 ...

  3. CodeIgniter框架隐藏index.php

    问题描述:使用CodeIgniter框架做项目时,在启用REWRITE的伪静态功能的时候,首页可以访问,但是访问其它页面的时候,就提示:“No input file specified.” 原因在于使 ...

  4. PHP的Enum(枚举)的实现

    转载请保留原文地址:http://www.cnblogs.com/zsxfbj/p/php_enum.html PHP其实有Enum类库的,需要安装perl扩展,所以不是php的标准扩展,因此代码的实 ...

  5. Spark的几个问题

    1.application是由driver和executor组成的,executor可以分成task,task又可以分成为stage.当一个任务提交给spark之后,spark机群的主节点会出现dri ...

  6. C++中不可重载5个运算符

    C++中不可重载的5个运算符 C++中的大部分运算符都是可以重载的,只有以下5个运算符不可以重载,他们是: 1  .(点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的   2 ...

  7. 用java和汇编开发一个hello world系统内核

  8. Jquery异步

    一.Jquery向aspx页面请求数据$("#Button1").bind("click", function () { $.ajax({ type: &quo ...

  9. php扩展开发2--添加类

    1.需要实现的细节 实现一个person类 实现一个doing方法和saying方法 2.第一个扩展 2.1创建类的扩展: [root@bogon ext]# cd /usr/local/src/ph ...

  10. 阿里云ECS购买优惠码

    今天收到了阿里云给我发的邮件,大意是阿里云推荐码限量开放,可享九折优惠! 于是就点击进去申请了一下 申请的优惠码是:C7IYIS有效期至2015-11-30 23:59:59 首次购买包年包月云服务器 ...