ipmitool 实时检测温度的脚本编写

一般在测试服务器整机测压过程中,需要监控固件的温度变化,有时候会根据spec来判断其温度是否超标,这样就需要我们写一个监控温度的脚本。
比如 我们来看一个测试用例:
测试过程检查SDR信息固件温度,SPEC要求各芯片低于Tjmax-10℃,spec如下:
部件 spec Tmax
FPGA 100
NIC 105
CPU0 105
DIMMG0 85
DiskG0 70
下面利用ipmitool写一下这个测试脚本。
1 筛选的我们需要查看的固件温度
ipmitool sdr list |egrep “FPGA|DIMM|NIC_Temp|CPU0_Temp|DiskG0_Temp”

ipmitool  sdr list  |egrep  "FPGA|DIMM|NIC_Temp|CPU0_Temp|DiskG0_Temp"
FPGA_Temp        | 78 degrees C      | ok
NIC_Temp         | 86 degrees C      | ok
CPU0_Temp        | 78 degrees C      | ok
DIMMG0_Temp      | 55 degrees C      | ok
DiskG0_Temp      | 46 degrees C      | ok

2.这一步需要写一个循环进行实时监控,因为整机压测一般在48h之内,所以我们可以用for 循环来写,每隔15秒检测一次:

for i in {1..10000};do
ipmitool  sdr list  |egrep  "FPGA|DIMM|NIC_Temp|CPU0_Temp|DiskG0_Temp" >temp.txt
sleep 15
done

3.接下来我们就要判断每个固件的温度是否超标,先提取每个固件的温度,然后判断:

temp=`cat temp.txt|awk '{print $3}'`
fpga=`cat temp.txt|grep -i fpga|awk '{print $3}'`
nic=`cat temp.txt|grep -i nic|awk '{print $3}'`
cpu=`cat temp.txt|grep -i cpu|awk '{print $3}'`
dimm=`cat temp.txt|grep -i dimm|awk '{print $3}'`
disk=`cat temp.txt|grep -i disk|awk '{print $3}'`
if [ $fpga -lt 90 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $nic -lt 105 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $cpu -lt 95 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $dimm -lt 75 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $disk -lt 60 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi

4.最后我们需要将判断的结果保存到测试结果里,并记录当前的次数和时间,用paste来实现结果的添加:

echo "===============$i==============="|tee -a temp_result.txt
date |tee -a temp_result.txt
paste temp.txt result.txt |tee -a temp_result.txt

5.完整版脚本如下:

#!/bin/bash
rm -rf result.txt
rm -rf temp_result.txt
for i in {1..10000};do
ipmitool  sdr list  |egrep  "FPGA|DIMM|NIC_Temp|CPU0_Temp|DiskG0_Temp" >temp.txt
temp=`cat temp.txt|awk '{print $3}'`
fpga=`cat temp.txt|grep -i fpga|awk '{print $3}'`
nic=`cat temp.txt|grep -i nic|awk '{print $3}'`
cpu=`cat temp.txt|grep -i cpu|awk '{print $3}'`
dimm=`cat temp.txt|grep -i dimm|awk '{print $3}'`
disk=`cat temp.txt|grep -i disk|awk '{print $3}'`
if [ $fpga -lt 90 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $nic -lt 105 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $cpu -lt 95 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $dimm -lt 75 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
if [ $disk -lt 60 ];then
        echo "pass" >>result.txt
        else
        echo "failed" >>result.txt
fi
echo "===============$i==============="|tee -a temp_result.txt
date |tee -a temp_result.txt
paste temp.txt result.txt |tee -a temp_result.txt
rm -rf result.txt
sleep 15
done

脚本运行结果如下:

===============1===============
Wed Sep 29 02:17:43 CST 2021
FPGA_Temp        | 79 degrees C      | ok       pass
NIC_Temp         | 87 degrees C      | ok       pass
CPU0_Temp        | 78 degrees C      | ok       pass
DIMMG0_Temp      | 56 degrees C      | ok       pass
DiskG0_Temp      | 46 degrees C      | ok       pass
===============2===============
Wed Sep 29 02:18:01 CST 2021
FPGA_Temp        | 79 degrees C      | ok       pass
NIC_Temp         | 87 degrees C      | ok       pass
CPU0_Temp        | 79 degrees C      | ok       pass
DIMMG0_Temp      | 56 degrees C      | ok       pass
DiskG0_Temp      | 46 degrees C      | ok       pass
===============3===============
Wed Sep 29 02:18:18 CST 2021
FPGA_Temp        | 79 degrees C      | ok       pass
NIC_Temp         | 87 degrees C      | ok       pass
CPU0_Temp        | 79 degrees C      | ok       pass
DIMMG0_Temp      | 56 degrees C      | ok       pass
DiskG0_Temp      | 47 degrees C      | ok       pass
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过编写一个 shell 脚本来批量配置 ipmitool 的用户名密码。具体实现步骤如下: 1. 编写脚本文件,命名为 `ipmi_config.sh`。 2. 在脚本文件中使用 `for` 循环结构遍历需要配置的主机 IP 地址列表。 3. 在循环内部,使用 `ipmitool` 命令配置主机的用户名和密码,命令格式如下: ``` ipmitool -I lanplus -H <主机IP地址> -U <用户名> -P <密码> user set name <新用户名> ipmitool -I lanplus -H <主机IP地址> -U <用户名> -P <密码> user set password <用户ID> <新密码> ``` 其中,`-I` 指定 IPMI 接口类型,`-H` 指定主机的 IP 地址,`-U` 和 `-P` 分别指定用户名和密码。`user set name` 命令用于设置用户名,`user set password` 命令用于设置密码,需要指定用户 ID 和新密码。 4. 将需要配置的主机 IP 地址、用户名和密码保存在一个文本文件中,每行一个,脚本中使用 `cat` 命令读取文本文件内容,将地址、用户名和密码分别赋值给变量。 5. 执行脚本,即可自动批量配置 ipmitool 的用户名密码。 完整脚本示例: ```bash #!/bin/bash # 读取需要配置的主机地址列表 HOSTS_FILE="hosts.txt" hosts=$(cat $HOSTS_FILE) # 遍历主机列表,依次配置用户名和密码 for host in $hosts; do echo "Configuring host: $host" username="admin" # 设置新的用户名 password="password" # 设置新的密码 ipmitool -I lanplus -H $host -U admin -P password user set name $username ipmitool -I lanplus -H $host -U $username -P $password user set password 1 $password done echo "Done." ``` 通过将需要配置的主机地址列表保存在 `hosts.txt` 文件中,执行 `./ipmi_config.sh` 命令即可自动批量配置 ipmitool 的用户名密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值