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

tech2025-09-26  3

说明

该脚本是通过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
最新回复(0)