说明
该脚本是通过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 ] ;thenecho "Usage: iplist.txt"elif [ -f $1 ] ; thenfor 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}donewait
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()"elseipmimac=`ipmitool -H "$k" -I lanplus -U "$user" -P "$passwd" lan print | grep "MAC Address" | awk '{print $4}'`echo "$k($ipmimac)" fi
}&
# 加了上面行的&符号,在后台执行速度快了很多,但是并没有根据Ip排序,也就是文件中 顺序是乱的。
donewait