整合了之前写的一些统计系统信息脚本,形成一个较大的应用脚本实例

 

#!/bin/bash
#title:统计系统信息
#author:Jelly_lyj
#date:2016-08-05
#version:V0.01
#other:此脚本仅用于Linux系统的系统信息统计

#===================================================== 
#Fuction System_info()-->收集和输出 系统|硬件相关信息
#=====================================================
System_info()
{
#显示系统版本号
  System_version=`cat /etc/redhat-release |awk \'{print $1,$2,$7}\'`  
#内核版本
  System_kernel=`uname -r`
#系统物理cpu个数和各个cpu有几个核
  Sytem_cpu=`cat /proc/cpuinfo | grep "physical id"|sort|uniq -c|awk \'{print "CPU:"$2,$NF,"Core:"$1}\'`
#机器型号 
   System_machine_model=`dmidecode | grep "Product Name" |sed -n \'1p\'|sed \'s/[\t]//g\'`
#CPU型号
   System_cpu_model=`cat /proc/cpuinfo |egrep "model name"|uniq|awk \'{print$4" "$5}\'`    
#显卡型号
   System__gpu_model=`lspci|grep VGA |awk \'{print $5" "$6" "$7" "$8" "$9}\'`

echo "=============System_info==============="
echo "系统使用的Linux系统版本是:$System_version"
echo "系统的内核版本是:$System_kernel"
echo -e "系统cpu个数与核数是:\n$Sytem_cpu"
echo "各个硬件型号:"
echo "  (1)机器型号:$System_machine_model"
echo "  (2)CPU型号:$System_cpu_model"
echo "  (3)显卡型号:$System__gpu_model"
echo "=============System_info==============="
}  


#==================================== 
#Fuction Disk_info() 收集硬盘|分区信息
#====================================
Disk_info()
{
#使用/tmp/disk.txt文件来存放各个硬盘名称
[ -f /tmp/disk.txt ]
if [ $? -eq 0 ]
then
   echo -n "">/tmp/disk.txt
   fdisk -l |egrep "Disk /dev"|awk \'{print $2}\'|awk -F: \'{print$1}\' >/tmp/disk.txt
else
   touch /tmp/disk.txt
   fdisk -l |egrep "Disk /dev"|awk \'{print $2}\'|awk -F: \'{print$1}\' >/tmp/disk.txt   
fi

Disk_count=`fdisk -l |egrep "Disk /dev"|wc -l`
echo "=============Disk_info==============="
echo "本机共有$Disk_count块硬盘"
while read disk
do
  Disk_DX=`fdisk -l $disk 2>/dev/null | egrep "Disk */" |awk \'{print $2$3$4}\'|sed -e \'s/:/=/g\' -e s/,//g`
  Disk_FQ=`fdisk -l $disk |egrep "^/dev"|wc -l`  
  echo "  其中$Disk_DX,有$Disk_FQ个分区"
done < /tmp/disk.txt
echo "=============Disk_info==============="
}


#==================================== 
#Fuction Mem_info()--->收集内存信息
#====================================
Mem_info()
{
#分别提取出内存的total、used、free
total=`free |egrep "^Mem"|awk \'{print $2}\'`
used=`free |egrep "^Mem"|awk \'{print $3}\'`
free=`free |egrep "^Mem"|awk \'{print $4}\'`
#利用bc按照单位为GB的格式输出
total_G=`echo "scale=1;$total/1000000"|bc`
used_G=`echo "scale=1;$used/1000000" |bc`
free_G=`echo "scale=1;$free/1000000" |bc`

echo "=============Mem_info==============="
echo  "Mem total:$total_G G" 
echo  "Mem used:$used_G G" 
echo  "Mem free:$free_G G"  
echo "=============Mem_info==============="
}


#==================================== 
#Fuction Os_info() 收集操作系统信息
#====================================
Os_info()
{
#当前系统运行级别
 Os_runlevel=`runlevel |awk \'{print$2}\'`
#当前系统登录用户
 Os_user=`whoami`
echo "=============Os_info==============="
echo "当前运行的系统级别是:$Os_runlevel"
echo "当前系统登录用户:$Os_user"
echo "=============Os_info==============="
}


#========================================= 
#Fuction Network_info() 收集操作系统信息
#=========================================
Network_info()
{
#计算本机IP个数
 IPGS=`ifconfig |egrep "\<inet\>" |wc -l`
#查询本机网关地址
 GW=`route -n |egrep "^0.0.0.0"|awk \'{print $2}\'`
echo "=============Network_info==============="
echo "本机IP地址有$IPGS个"
ifconfig |egrep "\<inet\>" |awk \'{print$2":"$4}\'|awk -F: \'{print"  IP:"$2",""子网掩码:"$4}\'
echo "网关地址为:$GW"
echo "=============Network_info==============="
}


#==================================== 
#Function-->供用户交互选择的主菜单界面
#====================================
Menu()
{
   echo "=============欢迎使用系统信息查询功能==============="
   echo
   echo "1. 系统|硬件信息"
   echo
   echo "2. 硬盘|分区信息"
   echo
   echo "3. 内存信息"
   echo 
   echo "4. 操作系统|运行信息"
   echo
   echo "5. 网络信息"
   echo
   echo "0. 退出系统"
   read -p "       请你输入你想查询的信息:"  choice
   
   case $choice in
   1) clear
      System_info
      Menu
   ;;
  
   2) clear
      Disk_info
      Menu  
   ;;
  
   3) clear
      Mem_info 
      Menu
   ;;
  
   4) clear
      Os_info  
      Menu
   ;;
   
   5) clear
      Network_info
      Menu
   ;;
   
   0) exit 0
   ;;
   
   *) echo "sorry,输入错误!"
      Menu
   ;;
   
   esac

}


#==================================== 
#Function--->主函数
#====================================
Main()
{
  Menu
}


#==================================== 
#入口
#====================================
Main;

 

版权声明:本文为snsdzjlz320原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/snsdzjlz320/p/5744391.html