ipmimac提取管理ip和MAC地址,格式——ipmi(MAC)

本文介绍了一种通过并发方式批量提取服务器管理地址(IPMI)及其MAC地址的脚本。脚本提供了两种实现方法,一种是将结果追加到指定文件,另一种是通过tee命令实时显示并保存结果。脚本首先使用ping命令检查IP的可达性,然后利用ipmitool命令获取MAC地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

该脚本是通过ipmimac命令提取管理地址ip和MAC地址的脚本,不知道这个命令的先百度该命令,了解下使用方式,提取格式为 ipmi(MAC),话不多说,直接放代码,脚本中已经对该脚本做出解释,这里就不多累赘。

2种实现方式

注:该脚本是通过并发形式完成的。

  • 方式1
[root@node-2 ccx]# cat autotest.sh 
#!/bin/bash
#sh autotest.sh iplist.txt admin admin
#							user   passwd
user="$2"
passwd="$3"

if [ $# -eq 0 ] ;then
        echo "Usage: iplist.txt"
        elif [ -f $1 ] ; then
                for k in `cat $1` ; do
                {
                		#因为ipmimac命令的特殊性,所以这里用ping来判断是否能与该ip连通,如果ping不通,返回的值为0,就说明不能与该地址连通,所以就不对该ip执行ipmimac命令。
                        pingt=`ping -c 2 "$k" | grep loss | awk '{print $4}'`
                        if [ $pingt -eq 0 ];then
                        		#ping不同的直接把ip追加到该目录。
                                echo "$k()">> /root/ccx/ipmi.log
                                #如果需要显示ping不同,可以吧下代码取消注释
                                # echo "Fail: Not ping $k,Please check ping $k"
                        else
                        		#就不对该命令做解释了,提取的值是MAC地址
                                ipmimac=`ipmitool -H "$k" -I lanplus -U "$user" -P "$passwd" lan print  | grep "MAC Address" | awk '{print $4}'`
                                #定义格式,IP(MAC)追加到该目录
                                 echo "$k($ipmimac)" >> /root/ccx/ipmi.log    
                        fi
                }
                done
                wait
fi
[root@node-2 ccx]# cat iplist.txt  #一行一个管理地址ip
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0

执行结果写入文件中如下图:
在这里插入图片描述

  • 方法二
    该方法是通过tee方式写入文件
[root@node-1 chenz]# cat get-ipmi-mac.sh 
#!/bin/bash
# ./get-ipmi-mac.sh ipmi-ip.txt admin admin | tee ipmi-mac.txt
				#	放ip		user	passwd  	写入到这个文本中


ipmiip="$1"
user="$2"
passwd="$3"

for k in $(cat $ipmiip);do
{
    pingt=`ping -c 2 "$k" | grep loss | awk '{print $4}'`
    if [ $pingt -eq 0 ];then
        # echo "Fail: Not ping $k,Please check ping $k"
        echo "$k()"
    else
        ipmimac=`ipmitool -H "$k" -I lanplus -U "$user" -P "$passwd" lan print  | grep "MAC Address" | awk '{print $4}'`
        echo "$k($ipmimac)"    
    fi
}&
# 加了上面行的&符号,在后台执行速度快了很多,但是并没有根据Ip排序,也就是文件中 顺序是乱的。
done

wait
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

҉人间无事人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值