思路如下:
- 获取硬盘序列号,获得三次,都不为空并且一致才使用
- 如果成立,则令diskSn等于此结果,如果不成立,获取所在分区的UUID
- 同样三次不为空且一致使diskSn等于此结果
- 都不成立则获取Linux的MacAddress
其中
获取硬盘序列号为:dmidecode -s system-serial-number
获取uuid为:blkid | awk ‘NR==1’ | awk ‘{print $2}’
获取mac地址为:ip addr | grep “link/ether” | awk ‘NR==1’ | awk ‘{print $2}’
shell脚本如下:shell
。
// An highlighted block
#!/bin/bash
echo "Content-Type:text/html\n\n"
serialNum=null
sn=null
uuid=null
mac=null
diskRun(){
s1=`dmidecode -s system-serial-number`
sn=`echo ${s1#*-} | sed s/[[:space:]]//g | sed 's/-//g' | tr [:lower:] [:upper:]`
}
uuidRun(){
uu1=`blkid | awk 'NR==1' | awk '{print $2}'`
uuid=`echo ${uu1##*=} | sed 's/\"//g' | sed 's/-//g' | tr [:lower:] [:upper:]`
}
macAddrRun(){
mac=`ip addr | grep "link/ether" | awk 'NR==1' | awk '{print $2}' | sed 's/://g'`
}
disk(){
diskRun
sn1=$sn
diskRun
sn2=$sn
diskRun
sn3=$sn
if [ $sn1 -a $sn2 = $sn1 -a $sn3 = $sn1 ]
then
serialNum=$sn1
return 1
fi
}
uuidMac(){
uuidRun
uuid1=$uuid
uuidRun
uuid2=$uuid
uuidRun
uuid3=$uuid
if [ $uuid1 -a $uuid2 = $uuid1 -a $uuid3 = $uuid1 ]
then
serialNum=$uuid1
return 1
else
macAddrRun
macaddr=$mac
serialNum=$macaddr
return 1
fi
}
disk
if [ $? = 1 ]
then
echo $serialNum
fi
if [ $serialNum = null ]
then
uuidMac
if [ $? = 1 ]
then
echo $serialNum
fi
fi