racadm环境之服务器BIOS设置(三)

此篇文章主要针对于DELL服务器racadm环境的BIOS配置,以F1/F2 Error提示和硬盘启动顺序更改为例。racadm基础用法可以参考前面文章。

#!/bin/bash
# Sly Chen
# date : 2016-09-14
IDRAC_IP=$1
USER=‘root‘
PASSWD=‘calvin‘
# racadm通用语法定义成变量
COMMAND="racadm -r ${IDRAC_IP} -u $USER -p $PASSWD"
# 获取控制器
CONTROLLER=$($COMMAND storage get controllers --nocertwarn | sed ‘s/\r/\n/g‘ | egrep "RAID")
# 当前作业数量统计
JOBS=$($COMMAND jobqueue view --nocertwarn | sed -n ‘/---/,$p‘ | wc -l)

# 以红色显示
function red() {
    echo -e "\033[31;40m$*\033[0m"
}

# 以绿色显示
function green() {
    echo -e "\033[32;40m$*\033[0m"
}

function sys_reboot {
        # 定义物理机重启函数
    $COMMAND serveraction powercycle --nocertwarn &> /dev/null
    if [ $? -eq 0 ]; then
        echo "${IDRAC_IP}: server powercycle success"
    else
        red "${IDRAC_IP}: server powercycle false"
        exit
    fi
}

function jobdel () {
    # 删除所有作业记录
    echo "${IDRAC_IP}: start jobqueue delete."
    while [ ${JOBS} -ne 2 ]; do
        racadm -r ${IDRAC_IP} -u ${USER} -p ${PASSWD} jobqueue delete --all --nocertwarn &> /dev/null
        local JOBS=$($COMMAND jobqueue view --nocertwarn | sed -n ‘/---/,$p‘ | wc -l)
    done
    echo "${IDRAC_IP}: jobqueue delete success."
}

function get_job_id (){
    # 此函数用于判断任务作业百分比,达到100%时确认作业完成
    # 启用LC
    $COMMAND set LifeCycleController.LCAttributes.LifecycleControllerState 1 &> /dev/null
    # 作业进度100%则退出死循环
    while true; do
        # 获取作业进度百分比
        JOB_PERCENT=$(${COMMAND} jobqueue view --nocertwarn | egrep -A7 "$JOBID" | awk -F "=" ‘/Percent Complete/ {print $2}‘ | sed ‘s/\r//g‘)
        if [ -z "$JOB_PERCENT" ]; then
            red "${IDRAC_IP}: Jobqueue is empty"
            exit
        elif echo $JOB_PERCENT | egrep ‘100‘ &> /dev/null; then
            break
        fi
        sleep 10
    done
    echo "${IDRAC_IP}: Jobqueue create success."
}

function jobsub_bios (){
    # 提交BIOS任务
    echo "${IDRAC_IP}: Jobqueue create BIOS.Setup, May be need 15min. Start time: $(date +%Y-%m-%d-%H:%M:%S)"
    # 提交BIOS作业
    local JOBID=$($COMMAND jobqueue create BIOS.Setup.1-1 --nocertwarn | awk ‘/Commit JID/ {print $4}‘ | sed ‘s/\r//g‘)
    [ -z "$JOBID" ] && red "${IDRAC_IP}: Did not get the JID" && exit
    ${COMMAND} serveraction powercycle --nocertwarn &> /dev/null
    # 判断作业百分比
    get_job_id ${IDRAC_IP}
    echo "${IDRAC_IP}: BIOS.Setup task jobsub done"
}

# job submit
function jobsub (){
    echo "${IDRAC_IP}: Jobqueue create Hard disk task, May be need 15min. Start time: $(date +%Y-%m-%d-%H:%M:%S)"
    # 提交阵列作业,获取作业JID
    local JOBID=$($COMMAND jobqueue create ${CONTROLLER} -s TIME_NOW -r forced --nocertwarn | awk ‘/Commit JID/ {print $4}‘ | sed ‘s/\r//g‘)
    # JID为空则退出
    [ -z "$JOBID" ] && red "${IDRAC_IP}: Did not get the JID" && exit
    ${COMMAND} serveraction powercycle --nocertwarn &> /dev/null
    # 判断作业百分比
    get_job_id ${IDRAC_IP}
    echo "${IDRAC_IP}: BIOS Controller task jobsub done"
}

function disable_error_prompt {
    # BIOS F1/F2 ErrPrompt
    echo "${IDRAC_IP}: Start disable ErrPrompt"
    $COMMAND set BIOS.MiscSettings.ErrPrompt Disabled &> /dev/null
    echo "${IDRAC_IP}: ErrPrompt disabled done"
}

function set_hard_disk_first_boot () {
    # 取出所有启动设备重新排序,sort命令默认会比较首字符,磁盘启动会优先于网卡
    BOOT_DRIVES_LIST=$($COMMAND get BIOS.BiosBootSettings.BootSeq | awk -F ‘[=]‘ ‘/BootSeq/{print $2}‘ | sed ‘s/\r$//;s/,/ /g‘ | xargs -n 1 | sort | xargs -n 9 | sed ‘s/ /,/g‘)
    $COMMAND set BIOS.BiosBootSettings.BootSeq $BOOT_DRIVES_LIST &> /dev/null
}

function bios_setup_check () {
    # 定义BIOS检查函数
    ERR_PROMPT_STATU_CHK=$($COMMAND get BIOS.MiscSettings.ErrPrompt | awk -F ‘=‘ ‘/ErrPrompt/ {print $2}‘ | sed ‘s/\r$//‘)
    # ErrorPrompt状态不为Disabled则报错
        if [ "$ERR_PROMPT_STATU_CHK" == "Disabled" ]; then
            green "${IDRAC_IP}: BIOS F1/F2 error prompt is Disabled."
    else
            red "${IDRAC_IP}: BIOS F1/F2 error prompt is Enabled"
            exit
    fi

    FIRST_BOOT_NAME_CHK=$($COMMAND get BIOS.BiosBootSettings.BootSeq  | awk -F "[=.]" ‘/BootSeq/ {print $2}‘ | sed ‘s/\r$//‘)
    # 第一启动不为HardDisk则报错,如果有包含CD-ROM启动,排序需往后移
        if [ "$FIRST_BOOT_NAME_CHK" == "HardDisk" ]; then
        green "${IDRAC_IP}: After testing,Hard disk first boot."
    else
        red "${IDRAC_IP}: The boot sequence: ${FIRST_BOOT_NAME_CHK}"
        exit
    fi
}

function main (){
    jobdel ${IDRAC_IP}
    # 获取第一启动项设备名称
    FIRST_BOOT_NAME=$($COMMAND get BIOS.BiosBootSettings.BootSeq  | awk -F "[=.]" ‘/BootSeq/ {print $2}‘ | sed ‘s/\r$//‘)
    # 获取ErrPrompt项状态
    ERR_PROMPT_STATU=$($COMMAND get BIOS.MiscSettings.ErrPrompt | awk -F ‘=‘ ‘/ErrPrompt/ {print $2}‘ | sed ‘s/\r$//‘)
    # 如果BIOS当前设置为硬盘第一启动,且F1/F2错误提示为Disabled,则退出,否则执行更改函数
    if [ "$FIRST_BOOT_NAME" == "HardDisk"  -a "$ERR_PROMPT_STATU" == "Disabled" ]; then
        echo "${IDRAC_IP}: BIOS F1/F2 errot prompt default is Disabled"
        echo "${IDRAC_IP}: Hard disk drive default is the first boot"
        exit
    elif [ "$FIRST_BOOT_NAME" != "HardDisk"  -a "$ERR_PROMPT_STATU" == "Disabled" ]; then
        set_hard_disk_first_boot
        echo "${IDRAC_IP}: BIOS F1/F2 errot prompt default is Disabled"
        jobsub_bios ${IDRAC_IP}
    elif [ "$FIRST_BOOT_NAME" == "HardDisk"  -a "$ERR_PROMPT_STATU" == "Enabled" ]; then
        echo "${IDRAC_IP}: Hard disk drive default is the first boot"
        disable_error_prompt
        jobsub_bios ${IDRAC_IP}
    elif [ "$FIRST_BOOT_NAME" != "HardDisk"  -a "$ERR_PROMPT_STATU" == "Enabled" ]; then
        set_hard_disk_first_boot
        disable_error_prompt
        jobsub_bios ${IDRAC_IP}
    else
        red "${IDRAC_IP}: Get Bios valus error"
        exit 3
    fi
    bios_setup_check ${IDRAC_IP}
}

main ${IDRAC_IP}

原文地址:http://blog.51cto.com/wuyanc/2139448

时间: 2024-08-11 09:53:28

racadm环境之服务器BIOS设置(三)的相关文章

racadm环境之服务器网卡mac获取(二)

依赖于前文环境:http://wuyanc.blog.51cto.com/11569260/1855947 对于pxe系统部署而言,网卡mac地址是必须的,而一台台手动去获取也太劳心劳累了,我们可以通过以下脚本批量获取你所需的mac,速度杠杠的,几秒钟的事. #!/bin/bash # chenss # date : 2016-09-09 # user='root' passwd='calvin' get_nic () { case $2 in 1)racadm -r $1 -u $user -

hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)

Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题. vi /etc/profile 在profile文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_H

华硕笔记本BIOS设置详解

BIOS是英文Basic Input/Output System的缩写,即基本输入输出系统,合理的BIOS设置可以让我们的电脑更好的为我们服务,但由于大部分笔记本的BIOS界面是英文,并且BIOS里面的某些关键选项稍有差池就会导致各种各样的问题,导致一些本友不敢放手更改设置,或者出了问题不知道如何解决,写这篇帖子的目的就是让大家看清BIOS之中包含哪些选项,哪些是我们常用的,结合本友们的自身需求,找到最合适的设置. 华硕笔记本现在采用的AMI的APTIO方案,基于EFI(Extensible F

iis7.5安装配置php环境详细清晰教程,三步实现【图文】

iis7.5安装配置php环境详细清晰教程,三步实现[图文] iis7.5是安装在win7.win8里的web服务器,win2003.win2000的web服务器使用的是iis6.0,由于win7.win8系统相比win2003.win2000有了改新革面的不同,因此对于iis7.5的配置也必需捣鼓一翻才能熟悉.不过这些都是操作性的东西,就如当初第一次接触iis6.0那样,操作过几遍就慢慢熟悉了. 当下我需要web服务器运行php程序,因此要配置一下php环境.一开始以为比较容易,因为在iis6

win2003服务器安全设置教程

服务器安全设置 1.系统盘和站点放置盘必须设置为NTFS格式,方便设置权限. 2.系统盘和站点放置盘除administrators 和system的用户权限全部去除. 3.启用windows自带防火墙,只保留有用的端口,比如远程和Web.Ftp(3389.80.21)等等,有邮件服务器的还要打开25和130端口. 4.安装好SQL后进入目录搜索 xplog70 然后将找到的三个文件改名或者删除. 5.更改sa密码为你都不知道的超长密码,在任何情况下都不要用sa这个帐户. 6.改名系统默认帐户名并

BIOS设置图解教程之Award篇

(目前主板上常见的BIOS主要为AMI与AWARD两个系列,如何辨别BIOS品牌系列请移步,本文详细讲解Award系列的BIOS设置图解教程,如果你的BIOS为AMI系列请移步 BIOS设置图解教程之AMI篇,文中重要的部分已经标红,快速阅读请配合图片查阅红色加速字体即可)介绍了AMI Bios设置后.我们再来介绍一下Award的Bios设置,其实Award Bios和AMI Bios里面有很多东西是相同的,可以说基本上是一样的,虽然有些名字叫法不同,但是实际作用是一样的.在前文中已经了解了一些

BIOS设置图解教程之AMI篇

(目前主板上常见的BIOS主要为AMI与AWARD两个系列,如何辨别BIOS品牌系列请移步,本文详细讲解AMI系列的BIOS设置图解教程,如果你的BIOS为AWARD系列请移步 BIOS设置图解教程之Award篇,文中重要的部分已经标红,快速阅读请配合图片查阅红色加速字体即可)对于很多初学者来说,BIOS设置是一件非常头疼的事情,面对着满屏的E文,实在是无从下手.但是,设置BIOS在高手的眼里,却什么也算不上.当你看着高手的指尖在键盘上熟练的跳动,而蓝色屏幕里的字符不停的变换,你一定很羡慕,不是

Linux配置tomcat (centos配置java环境 tomcat配置篇 总结三)

?下载安装tomcat7 ?设置启动和关闭 ?设置用户名和密码 ?发布java web项目 声明:这篇教程是建立在前两篇教程的基础上的,所以,还没安装工具和jdk,可以先看这个系列的前面两篇(去到文末找超链接喔!). 1.下载安装tomcat7 1.1在Xshell中使用命令跳转到local下面创建者自己的文件夹tomcat cd /usr/local/ mkdir tomcat cd  tomcat/  1.2下载tomcat7 下载tomcat7:  http://tomcat.apache

BIOS设置图解教程-看完就没有不明白的了

BIOS(基本输入/输出系统)是被固化在计算机CMOS RAM芯片中的一组程序,为计算机提供最初的.最直接的硬件控制.BIOS主要有两类∶AWARD BIOS和AMI BIOS.正确设置BIOS可大大提高系统性能. 第一部分.AWARD BIOS设置 一.进入 BIOS 设置 电脑刚启动,出现如下图1画面时. 图1 当出现图1画面时,按下Delete(或者Del)键不放手直到进入BIOS(基本输入/输出系统)设置,如下图2 图2(主菜单) 上图是AWARD BIOS设置的主菜单.最顶一行标出了S