美文网首页
linux获取系统信息脚本

linux获取系统信息脚本

作者: 明明就_c565 | 来源:发表于2023-07-27 09:40 被阅读0次

#!/bin/bash

#

#*********************************

#*******************************

##封装函数

systeminfo() {

#++++++++++++++++++++++++++++++

##################整体介绍

####需要的预先安装的组件

####  awk cat virt-what  pciutils(lspci命令)

#软件包检查并安装

rpm --help >/dev/null 2>&1 && yum install -y pciutils ;rpm -qa |grep virt-what >/dev/null 2>&1 ||yum install -y virt-what >/dev/null 2>&1

dpkg --help >/dev/null 2>&1 && dpkg -l |grep virt-what >/dev/null 2>&1 ||apt-get install virt-what -y >/dev/null 2>&1

#+++++++++++++++++++++++++++++++

####自定义函数部分

#获取系统分支及版本

get_opsy() {

    [ -f /etc/redhat-release ] && awk '{print ($1,$3~/^[0-9]/?$3:$4)}' /etc/redhat-release && return

    [ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release && return

    [ -f /etc/lsb-release ] && awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release && return

}

#查看CPU是否支持64

cpu_64() {

    [ `cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l` -gt 0 ] && echo "支持" || echo "不支持"

}

#磁盘信息

disk() {

    #检查并安装smartmontools软件包

        rpm --help >/dev/null 2>&1 && rpm -qa |grep smartmontools >/dev/null 2>&1 ||yum install smartmontools -y >/dev/null 2>&1

    dpkg --help >/dev/null 2>&1 && dpkg -l |grep smartmontools >/dev/null 2>&1 ||apt-get install smartmontools -y >/dev/null 2>&1

        ls /dev/[shv]d[a-z] | while read line

        do

                #smartctl -a $line | grep "Model Family" | awk -F: '{printf "制造商:%s\n",$2}' |sed 's/^[ \t]*//;s/[ \t]*$//' >> 10

                smartctl -a $line |grep "Model Family" | awk -F: '{print $2}' |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " 制造商:%s \n", $0}' >> 10

                smartctl -a $line | grep "Rotation Rate" | awk -F: '{print $2}' |sed 's/^[ \t]*//;s/[ \t]*$//' |  awk -F: '{printf " 转  速:%s \n",$0}' >> 20

                smartctl -a $line | grep "Sector Size" | awk -F: '{print $2}' |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " 扇  区:%s \n",$0}' >> 30

                smartctl -a $line | grep "User Capacity" | awk -F: '{print $2}' |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " 容  量:%s \n",$0}' >> 40

                smartctl -a $line | grep "Serial Number" | awk -F: '{print $2}' |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " 序列号:%s \n",$0}' >> 50

                echo "$line " >> 60

        lsblk  >> 70

        done

        paste -d"|" 60 10 20 30 40 50

    echo -e "\t"

    cat 70

    rm -f 60 10 20 30 40 50 70

}

#网卡信息

net() {

    pcinetsl=$( lspci | egrep -i --color 'network|ethernet' |wc -l )

    ip address |grep ^[0-9] |awk -F: '{print $2}' |sed "s/ //g" |grep '^[ebp]' | while read line1

    do

        echo -e "$line1 " >> a

        ethtool $line1 | grep "Speed" |awk -F: '{printf " 速率:%s \n",$2}' >> b

        ethtool $line1 | grep "Duplex" |awk -F: '{printf " 双工模式:%s \n",$2}' >> c

        ethtool $line1 | grep "Supports auto-negotiation" | awk -F: '{printf " 自动协商:%s \n",$2}' >> d

        ethtool $line1 | grep "Port" |awk -F: '{printf " 网口类型:%s \n",$2}' >> e

        ethtool $line1 | grep "Link detected" |awk -F: '{printf " 链接状态:%s \n",$2}' >> f

        ip address show $line1 | grep -E "UP|DOWN" | awk -F" " '{printf " 工作状态:%s \n",$9}' >> g

        ip address show $line1 | grep "mtu" | awk -F" " '{printf " MTU:%s \n",$5}' >> h

        ip address show $line1 | grep "link/" | sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F" " '{printf " MAC值:%s \n",$2}' >> i

        ip add show $line1 | grep -w "inet" |sed "s/^[ \t]*//g" |awk -F" " '{printf " %s  ",$2}'  |sed "s/ /IP地址:/1" >> j

    done

    echo -e "pci网卡数量    : $pcinetsl 张"

    paste -d"|" a b c d e f g h i j

    rm -f a b c d e f g h i j

}

#++++++++++++++++++++++++++++++

cpus=$( cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l )

cpuname=$( awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//' )

cpucores=$( cat /proc/cpuinfo |grep "cores"|uniq | awk -F: '{print $2}' )

cputhread=$( cat /proc/cpuinfo |grep "processor"|wc -l )

cpuvm=$( cat /proc/cpuinfo | grep -E '(vmx|svm)'  >/dev/null 2>&1 && echo "open" || echo "close"  )

freq=$( awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//' )

tram=$( free -m | awk '/Mem/ {print $2}' )

uram=$( free -m | awk '/Mem/ {print $3}' )

swap=$( free -m | awk '/Swap/ {print $2}' )

uswap=$( free -m | awk '/Swap/ {print $3}' )

arch=$( uname -m )

lbit=$( getconf LONG_BIT )

up=$( awk '{a=$1/86400;b=($1%86400)/3600;c=($1%3600)/60} {printf("%d days, %d hour %d min\n",a,b,c)}' /proc/uptime )

load=$( w | head -1 | awk -F'load average:' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//' )

system=$( uname -a | awk '{print $1}')

kern=$( uname -r )

hostname=$( hostname )

#ip=$( curl -s myip.ipip.net )

ipv4=$( curl -s myip.ipip.net | awk -F ' ' '{print $2}' | awk -F ':' '{print $2}' )

ipgs=$( curl -s myip.ipip.net | awk -F ':' '{print $3}' )

opsy=$( get_opsy )

cpu64=$( cpu_64 )

vm=$( virt-what )

memmax=$( dmidecode -t 16 |grep -P 'Maximum\s+Capacity' | awk -F: '{print $2}' )

memcao=$( dmidecode -t 16 |grep "Number Of Devices" | awk -F: '{print $2}' )

memz=$( dmidecode -t 19 |grep "Range Size" |awk -F: '{print $2}' )

#内存信息

#内存厂商

memoe=$( dmidecode -t 17 |grep "Manufacturer" | sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf "厂商:%s\n" ,$2}' >12 )

memsn=$( dmidecode -t 17 |grep "Serial Number" | sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf "序列号:%s\n" ,$2}' > 23)

#内存类型

memfactor=$( dmidecode -t 17 |grep "Form Factor" | sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf "Factor:%s\n" ,$2}' > 34 )

memddr=$( dmidecode -t 17 |grep "Type:" | sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf "Type:%s\n" ,$2}' > 45 )

memhz=$( dmidecode -t 17 |grep "Configured Clock Speed:"| sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf "真实频率:%s\n" ,$2}' > 56 )

memsize=$( dmidecode -t 17 |grep "Size" | sed 's/^[ \t]*//;s/[ \t]*$//' > 67 )

meminfo=$( paste 12 34 45 56 23 67 )

#主机信息

#制造商

serveroe=$( dmidecode -t 1 | grep "Manufacturer" |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf "制造商:%s \n" ,$2}' > 1 )

serverpn=$( dmidecode -t 1 | grep "Product Name" |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " 主机型号:%s \n" ,$2}' > 2 )

serverfm=$( dmidecode -t 1 | grep "Family" |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " Family:%s \n" ,$2}' > 3 )

serversn=$( dmidecode -t 1 | grep "Serial Number" |sed 's/^[ \t]*//;s/[ \t]*$//' | awk -F: '{printf " 主机SN码:%s \n" ,$2}' > 4 )

serverinfo=$( paste -d"|" 1 2 3 4 )

#系统安装时间(换一种,基于软件包的安装时间来判定安装时间,前面两行好像不能用了,很久前写的,不知道怎么改了,直接换一行)

#A=$( df -h |grep '/boot' |awk -F' ' '{print $1}' )

#B=$( tune2fs -l $A |grep create |awk -F'  ' '{print $4}' )

B=$( rpm -q basesystem --qf '%{installtime:date}\n')

#硬盘信息

disksl=$( ls -l /dev/[sh]d[a-z] | wc -l )

#pci物理网卡信息

#pcinetsl=$( lspci | egrep -i --color 'network|ethernet' |wc -l )

####系统信息显示部分

echo -e "\n##################硬件信息##############"

echo "cpu物理数量  : $cpus 颗"

echo "CPU型号    : $cpuname"

echo "CPU核心数        : $cpucores"

echo "CPU线程数        :  $cputhread"

echo "CPU频率    : $freq MHz"

echo "CPU是否支持64位    : $cpu64"

echo "CPU虚拟化状态  : $cpuvm"

echo "内存插槽数量    : $memcao"

echo "最大内存支持    : $memmax"

echo "实际内存大小    : $memz"

echo -e "\n##内存信息\n$meminfo"

rm -f 12 23 34 45 56 67

echo -e "\n##主机信息\n$serverinfo"

rm -f 1 2 3 4

echo -e "\n##系统层面得到的硬盘信息"

echo "硬盘数量  : $disksl 块"

disk

echo -e "\n##网卡信息"

net

echo -e "\n##################系统信息###############"

echo "CPU负载    : $load"

echo "MEMORY        : $tram MB ($uram MB Used)"

echo "SWAP      : $swap MB ($uswap MB Used)"

echo "OS类别      : $system"

echo "内核版本  : $kern"

echo "OS版本      : $opsy"

echo "OS架构      : $arch ($lbit 位)"

echo "虚拟化      : $vm"

echo "系统安装时间      :$B"

echo "OS运行时长    : $up"

echo "主机名      : $hostname"

echo "IPv4      : $ipv4  $ipgs"

}

systeminfo

相关文章

网友评论

      本文标题:linux获取系统信息脚本

      本文链接:https://www.haomeiwen.com/subject/mkylpdtx.html