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