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

说明

该脚本是通过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

执行结果写入文件中如下图:
ipmimac提取管理ip和MAC地址,格式——ipmi(MAC)_第1张图片

  • 方法二
    该方法是通过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

你可能感兴趣的:(shell,linux,shell)