shell获取Linux主机信息(mac地址,处理器,主板,uuid,硬盘)的方法

几个月前换了实习,是一家主要做云计算的创业公司,实习期间给公司的云平台产品做了license绑定主机信息的任务,只能使用shell,需要绑定的信息有:网卡mac地址,处理器id,主板id,系统uuid,硬盘id。我们认为,当以上5种信息,有3种及3种以上信息相同的情况下,确认为同一台主机,因为有的信息在不同环境下可能取不到。若是同一台主机,则含有这5种信息的license在校验过后准许登录,若不符合,则不允许登录。以下是shell脚本:

#!/bin/bash -e
exec 2>/dev/null
if [ ! -f "/usr/sbin/dmidecode" ]; then yum -y install dmidecode; fi
if [ ! -f "/sbin/hdparm" ]; then yum -y install hdparm; fi
if [  -f ~/sysInfo ]; then rm -f ~/sysInfo; fi
uuid=$(dmidecode -s system-uuid)
proccesorid=$(dmidecode -t processor |grep ID |head -1|sed 's/ID:/ /g')
baseboard=$(dmidecode -s baseboard-serial-number)
mac=$(awk '(!/^[#|$]/)&&/./{print $4}' /etc/udev/rules.d/70-persistent-net.rules |sed 's/ATTR{address}=="/ /g'|sed 's/",//g')
harddisk=$(hdparm -i /dev/sda | grep SerialNo |awk '{print $3}'|sed 's/SerialNo=//g')
sec=$(echo ${proccesorid}%${baseboard}%${mac}%${harddisk}%${uuid}| sed 's/ //g')
echo $sec|base64 -i|awk '{
  {printf "%s",$0}}'

其中,dmidecode和hdarm在大部分linux发行版本中,都默认自带了。uuid,proccessorid,baseboard,mac,harddisk分别是以上5种信息,中间还做了些格式化的操作。

由于要生成license,尽量不要明文,所以在最后又做了一次base64使得生成的sec可以以“密文”传出,当然,在之后真正生成license的时候,会再做一次真正的加密。

    原文作者:诸葛丰豪
    原文地址: https://blog.csdn.net/zhugefenghao/article/details/50755325
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞