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. GitFlow在命令行的使用

    gitflow安装 在命令行直接使用yum安装 yum install gitflow 如果本地的yum源中不存在gitflow,可以尝试添加EPEL源 CentOS6.5: # 下载 wget ht ...

  2. centos7防火墙 启动和关闭

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.firewall:systemctl start firewalld.service   #启动firewa ...

  3. mysql事务之二:MySQL隔离级别演示

    登录mysql: mysql -u root -p123456 Mysql 版本号 mysql> select version(); +-------------------------+ | ...

  4. 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况

     装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...

  5. Idea 如何设置微软雅黑等其它字体

    使用过idea的同学都知道,idea的功能相对于explise来说,功能太强大了啊~个人感觉,idea真心挺智能的.但是,这里有一个小瑕疵,就是能够设置的字体,有限! 对于用惯了 微软雅黑 字体的人, ...

  6. Excel开发学习笔记:根据工作表worksheet内容控制按钮的状态

    开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 在Ribbon工具栏中有2个功能按钮,它们是否可用取决于workshe ...

  7. 用cascade删除有约束的表或记录

    删除有约束的表 Drop table TERMPRO_RULE_ROUTE_TYPE cascade constraints:

  8. 安卓Animation类与xml制作动画

    有时要对控件添加一点动画效果,在安卓中,动画效果也是一个类,也就是Animation类.把动画效果这个类弄好后,在与控件类关联到一起,就可以实现控件有一些动作特效这样的效果了.动画效果的定义,要在xm ...

  9. string的深入理解

    本文只是个人总结见解,勿喷 首先肯定的是string是引用类型 string s_a = "yhc"; string s_b = s_a; if(s_a.Equals(s_b)) ...

  10. web表单disable问题

    Web表单提交之disabled问题 例如,有如下表单 <form id="inputForm" action="shorttermrental.action&qu ...