Shell——查看基础信息脚本

2023-05-16

文章目录

      • 脚本简介
      • 脚本注解
      • 安装方式
      • 执行方式
        • 执行结果
      • 脚本内容
        • 新版本
        • 旧版本

脚本简介

  1. 基于运维统一脚本中,19、脚本安装下的检查服务器脚本安装
  2. 使用yum安装(yum仓库),系统版本Centos7

脚本注解

  1. 该脚本为了快速查看Centos7服务器上的基础配置
  2. 基础配置:OS、CPU、Memory、DISK、Network 的基础配置信息
  3. 脚本在检查磁盘读写是需要安装sysstat,检查网络配置是需要安装net-tools安装包
  4. 脚本自动判断,如果没有安装,则退出脚本,提示需要安装对应的软件包

安装方式

cd /usr/local/bin
vim infosystem
...
# 保存退出后,赋予脚本可执行权限
chomd +x infosystem
  1. 脚本存放在/usr/local/bin/目录下,文件名: infosystem
  2. 存放完成后,添加可执行权限

执行方式

infosystem
  1. 在当前已安装的服务器上的任意路径输入infosystem
  2. 服务器上已安装bash-completion的则可使用tab键进行自动补全

执行结果

[root@localhost ~]# infosystem 
----------------------------------------------------------------------------------
系统基本信息
            系统: CentOS kvm x86_64
            主机: CentOS
            内核: Linux 3.10.0-957.21.3.el7.x86_64
            负载: 0.18, 0.35, 0.40
          主机名: ansible
      Shell 版本: 4.2.46(2)-release
          IP地址: 172.21.134.130 172.22.0.1 172.17.0.1 172.16.1.64 172.18.0.1 
----------------------------------------------------------------------------------
CPU的基本信息
       物理CPU数: 1
     逻辑CPU总数: 8
 CPU对应物理核数: 4
         CPU名称: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
----------------------------------------------------------------------------------
CPU使用状态(%)百分比
     用户空间占用CPU: 3.1 us	 IO等待占用CPU的百分比: 0.0 wa
     内核空间占用CPU: 2.3 sy			硬中断: 0.0 hi
  改变过优先级的进程: 0.0 ni			软中断: 0.0 si
       空闲CPU百分比: 94.6 id	     等待真实的cpu资源: 0.0 si
----------------------------------------------------------------------------------
内存基本信息
            总量: 15884MB
程序认为可用内存: 8510MB
    实际尚未使用: 394MB+8510MB=8904MB
      内存使用率: 43.94%
    交换分区总量: 0MB
  交换分区使用量: 0MB
----------------------------------------------------------------------------------
磁盘基本信息
名称     类型(SSD)             
vda        HDD                     
----------------------------------------------------------------------------------
名称                         大小        r/s       w/s       rkB/s     类型     
/dev/vda1                    107.4GB     0.87      9.38      46.79     ext4      
----------------------------------------------------------------------------------
网卡基本信息
网卡            IPV4            掩码            广播          接收数据包 发送数据包 IPV6                   
br-8dab7d403a06 172.22.0.1      255.255.0.0     172.22.255.255  0.0        0.0                                    
br-c1e26c782f89 172.18.0.1      255.255.0.0     172.18.255.255  0.0        0.0                                    
docker0         172.17.0.1      255.255.0.0     172.17.255.255  714.4      1.1                                    
eth0            172.21.134.130  255.255.240.0   172.21.143.255  7.2        734.8                                  
lo              127.0.0.1       255.0.0.0                       324.6      324.6                                             
tunl0           172.16.1.64     255.255.255.255                 0.0        0.0      

脚本内容

新版本

  1. 新版本新增中文注解,同时可通过脚本变量进行修改,默认中文,可执行修改
  2. 新增CPU使用状态内容
  3. 优化网卡的显示内容,(k8s安装calico生成的虚拟网卡除外)
#!/bin/bash
#所有者:北城半夏
#当前版本
#v1.0.1
#################################################################################
#English or Chinese
language="Chinese"
#################################################################################
info3(){
 echo -e "\033[36m----------------------------------------------------------------------------------\033[0m" 
}

info(){
 #系统
 system=$(hostnamectl | grep System | awk '{print $3}')
 kernel_release=$(hostnamectl | grep Kernel | awk -F : '{print $2}'|sed 's/^[ \t]*//g')
 Virtualization=$(hostnamectl | grep Virtualization | awk '{print $2}')
 server_name=$(hostname)
 ipaddr=$(hostname -I)
 #cpu
 Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
 Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
 CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
 CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
 CPU_Arch=$(uname -m)
 #负载
 update_load=`uptime | awk -F ":" '{print $NF}'|sed 's/^[ \t]*//g'`
 #bash
 bash_version=`bash --version|grep "GNU bash"|awk '{print $4}'`
 #内存
 MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB
 MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB
 MemAvailable=$(grep -i Cached /proc/meminfo | awk '{print $2}' |head -1) #KB
 SwapTotal=$(grep SwapTotal /proc/meminfo| awk '{print $2}')
 SwapFree=$(grep SwapFree /proc/meminfo| awk '{print $2}') #KB
 let MemUsed=MemTotal-MemFree
 MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
 report_MemTotal="$((MemTotal/1024))" #内存总容量(MB)
 report_MemFree="$((MemFree/1024))" #内存剩余(MB)
 report_MemAvai="$((MemAvailable/1024))" #使用中(MB)
 #swap
 report_swapTotal="$((SwapTotal/1024))""MB" #内存总容量(MB)
 report_swapFree="$((SwapFree/1024))""MB" #内存剩余(MB)
 let Memfree=MemAvailable+MemFree
 let MemUsed=MemTotal-Memfree
 report_Mem="$((Memfree/1024))""MB"
 report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%


}
pd_disk_ssd(){
 pd_ssd=`lsblk -d -o name|grep -v NAME`
 pd_TYPE=`lsblk -d -o rota|grep -v ROTA`
 for i in  ${pd_ssd};do pd_ssd_name[${#pd_ssd_name[*]}]=$i;done
 for i in  ${pd_TYPE};do pd_TYPE_name[${#pd_TYPE_name[*]}]=$i;done

if [ ${language} == "Chinese" ];then
      printf "\e[34m%-10s %-11s %-11s \e[0m\n" 名称 类型\(SSD\)
  elif [ ${language} == "English" ];then
      printf "\e[34m%-10s %-11s %-11s \e[0m\n" Disk_name Disk_Type\(SSD\)
fi


 local num1=$((`echo ${#pd_TYPE_name[*]}`-1))
 for pd in `seq 0 ${num1}`
   do
      if [ ${pd_TYPE_name[pd]} -eq 0 ];then
          printf "\e[36m%-10s %-11s %-11s \e[0m\n" ${pd_ssd_name[pd]} SSD
      elif [ ${pd_TYPE_name[pd]} -eq 1 ];then
          printf "\e[36m%-10s %-11s %-11s \e[0m\n" ${pd_ssd_name[pd]}  HDD
      fi
 done
 info3
}
#网卡信息
getnetworkstatus(){
 check_rpm_iostat net-tools
 local ifs=`ifconfig | egrep "^[a-z]"| egrep -v "^c|^v" |awk -F ':' '{print $1}'`
 echo -e "\033[36m网卡基本信息\033[0m" 
 local a=${ifs}
 local b=`for i in $a;  do  echo $(ifconfig ${i} |grep inet6 |awk '{print $2}') ;done`
 local ipv4=$(for i in $a;do echo "`ifconfig ${i} | awk 'NR==2{print $2}'`" ;done)
 local netmask=$(for i in $a ;do echo `ifconfig  $i|grep netmask|awk '{print $4}'` ;   done)
 local broadcast=$(for i in $a ;do echo `ifconfig  $i|grep broadcast|awk '{print $6}'` ;   done)
 local RX_packets=$(for i in $a ;do echo `ifconfig $i|grep "RX packets"|awk -F '(' '{print $2}'|cut -d ")" -f 1|awk '{print $1}'` ;   done)
 local TX_packets=$(for i in $a ;do echo `ifconfig $i|grep "TX packets"|awk -F '(' '{print $2}'|cut -d ")" -f 1|awk '{print $1}'` ;   done)
 local num=`for i in  ${ifs};do echo $i ;done |wc -l`
 local num_01=`for((i=0;i<$num;i++)); do echo $i; done`
  #ipv4
  for i in $ipv4 ;do  network_ipv4[${#network_ipv4[*]}]=$i ;done
  #ipv6
  for i in $b;  do network_ipv6[${#network_ipv6[*]}]=$i ; done
  #网卡名
  eth_name=(`echo ${ifs}`)
  #netmask 子网掩码
  for i in $netmask;  do network_netmask[${#network_netmask[*]}]=$i ; done
  #broadcast 默认网关
  for i in $broadcast;  do network_broadcast[${#network_broadcast[*]}]=$i ; done
  #RX packets 出流量
  for i in $RX_packets;  do network_RX_packets[${#network_RX_packets[*]}]=$i ; done
  #TX packets 进流量
  for i in $TX_packets;  do network_TX_packets[${#network_TX_packets[*]}]=$i ; done
if [ ${language} == "Chinese" ];then
      printf "\e[34m%-17s %-15s %-17s %-15s %-10s %-15s %-23s\e[0m\n"  网卡 IPV4 掩码 广播  接收数据包 发送数据包 IPV6
  elif [ ${language} == "English" ];then
      printf "\e[34m%-15s %-15s %-15s %-15s %-10s %-15s %-23s\e[0m\n"  Network IPV4 Netmask Broadcas  RX_packets TX_packets IPV6
fi
 for i in $num_01
  do
    if [ ${eth_name[i]} == lo ] || [ ${eth_name[i]} == tunl0 ];then
        printf "%-15s %-15s %-31s %-10s %-10s %-15s %-23s\n" ${eth_name[i]} ${network_ipv4[i]} ${network_netmask[i]}  ${network_RX_packets[i]} ${network_TX_packets[i]} ${network_ipv6[i]}
    else
        printf "%-15s %-15s %-15s %-15s %-10s %-15s %-23s\n" ${eth_name[i]} ${network_ipv4[i]} ${network_netmask[i]} ${network_broadcast[i]} ${network_RX_packets[i]} ${network_TX_packets[i]} ${network_ipv6[i]}
    fi
 done

}
############################################################################################################
disk_info(){
  #磁盘
 check_rpm_iostat sysstat
 disk_info=`blkid|awk -F':' '{print $1}'|grep -v sr0`
 for i in  ${disk_info};do disk_name[${#disk_name[*]}]=$i;done
 disk_type_info=`blkid|awk  '{print $1""$NF}'|grep -v sr0|awk -F'"' '{print $2}'`
 for i in  ${disk_type_info};do disk_type[${#disk_type[*]}]=$i;done
 num=$((`echo ${#disk_name[*]}`-1))
 for size in `seq 0 ${num}`
     do
       disk_size_array=`fdisk -l ${disk_name[size]}|grep Disk|awk '{print $3""$4}'|cut -d , -f 1`
       disk_size[${#disk_size[*]}]=$disk_size_array
       diskRead_writ_array=`iostat -d -x  ${disk_name[size]}| grep -v "^$"|tail -1|awk '{print $4"\t"$5"\t"$6}'`
       diskRead_writ[${#diskRead_writ[*]}]=${diskRead_writ_array}
 done
 echo -e "\033[36m磁盘基本信息\033[0m"
 pd_disk_ssd
if [ ${language} == "Chinese" ];then
    printf "\e[34m%-30s %-13s %-10s%-10s%-10s%-11s\e[0m\n" 名称 大小  r/s     w/s    rkB/s 类型
  elif [ ${language} == "English" ];then
    printf "\e[34m%-28s %-11s %-10s%-10s%-10s%-11s\e[0m\n" Disk_name Size  r/s     w/s    rkB/s Type
fi
 for i in `seq 0 $num`
   do
     printf "\e[32m%-28s %-10s  %-10s%-10s%-10s%-10s\e[0m\n" ${disk_name[i]} ${disk_size[i]}  ${diskRead_writ[i]} ${disk_type[i]}
  done
}
CPU_STATUS(){
  local status=`top -b -n 1|head |grep "%Cpu(s)"|cut -d : -f 2 |sed 's/^[ \t]*//g'`
  local user_cpu=`echo ${status}| awk -F ',' '{print $1}'`
  local kernel_CPUs=`echo ${status}| awk -F ',' '{print $2}'|sed 's/^[ \t]*//g'`
  local process_CPUs=`echo ${status} | awk -F ',' '{print $3}'|sed 's/^[ \t]*//g'`
  local free_CPUs=`echo ${status} | awk -F ',' '{print $4}'|sed 's/^[ \t]*//g'`
  local iowait=`echo ${status} | awk -F ',' '{print $5}'|sed 's/^[ \t]*//g'`
  local Hardware=`echo ${status} | awk -F ',' '{print $6}'|sed 's/^[ \t]*//g'`
  local Interrupts=`echo ${status} | awk -F ',' '{print $7}'|sed 's/^[ \t]*//g'`
  local real=`echo ${status} | awk -F ',' '{print $7}'|sed 's/^[ \t]*//g'`
  info3
 echo -e "\033[36mCPU使用状态(%)百分比\033[0m"
 if [ ${language} == "Chinese" ];then
       echo -e "     用户空间占用CPU: $user_cpu\t IO等待占用CPU的百分比: ${iowait}"
       echo -e "     内核空间占用CPU: $kernel_CPUs\t\t\t硬中断: ${Hardware}"
       echo -e "  改变过优先级的进程: $process_CPUs\t\t\t软中断: ${Interrupts}"
       echo -e "       空闲CPU百分比: $free_CPUs\t     等待真实的cpu资源: ${real}"
 elif [ ${language} == "English" ];then
       #English
       echo -e "       user_CPUs: $user_cpu    \t\t     IO Wait: ${iowait}"
       echo -e "     kernel_CPUs: $kernel_CPUs    \t\tHardware IRQ: ${Hardware}"
       echo -e "    process_CPUs: $process_CPUs\t\t Software Interrupts: ${Interrupts}"
       echo -e "       free_CPUs: $free_CPUs\t   Wait for real cpu: ${real}"
 fi
}
index_portal(){
  case $1 in 
    'cpu')
        if [ ${language} == "Chinese" ];then
             echo -e "\033[36m系统基本信息\033[0m"
             echo "            系统: ${system} ${Virtualization} ${CPU_Arch}"
             echo "            主机: ${system}"
             echo "            内核: ${kernel_release}"
             echo "            负载: ${update_load}"
             echo "          主机名: ${server_name}"
             echo "      Shell 版本: ${bash_version}"
             echo "          IP地址: ${ipaddr}"
             info3
             echo -e "\033[36mCPU的基本信息\033[0m"
             echo "       物理CPU数: $Physical_CPUs"
             echo "     逻辑CPU总数: $Virt_CPUs"
             echo " CPU对应物理核数: $CPU_Kernels"
             echo "         CPU名称: $CPU_Type"

         elif [ ${language} == "English" ];then
         #English
             echo -e "\033[36m系统基本信息\033[0m"
             echo "              OS: ${system} ${Virtualization} ${CPU_Arch}"
             echo "            Host: ${system}"
             echo "          Kernel: ${kernel_release}"
             echo "          Uptime: ${update_load}"
             echo "        Hostname: ${server_name}"
             echo "   Shell version: ${bash_version}"
             echo "          IPaddr: ${ipaddr}"
             info3
             echo -e "\033[36mCPU的基本信息\033[0m"
             echo "   Physical_CPUs: $Physical_CPUs"
             echo "       Virt_CPUs: $Virt_CPUs"
             echo "     CPU_Kernels: $CPU_Kernels"
             echo "        CPU_Type: $CPU_Type"
       fi;;
     'mem')
        if [ ${language} == "Chinese" ];then
             echo -e "\033[36m内存基本信息\033[0m"
             echo "            总量: ${report_MemTotal}MB"
             echo "程序认为可用内存: ${report_MemAvai}MB" 
             echo "    实际尚未使用: ${report_MemFree}MB+${report_MemAvai}MB=${report_Mem}"
             echo "      内存使用率: ${report_MemUsedPercent}"
             echo "    交换分区总量: ${report_swapTotal}"
             echo "  交换分区使用量: ${report_swapTotal}"
         
         elif [ ${language} == "English" ];then
             echo -e "\033[36m内存基本信息\033[0m"
             echo "           Total: ${report_MemTotal}MB"
             echo "           Avail: ${report_MemAvai}MB" 
             echo "            Free: ${report_MemFree}MB+${report_MemAvai}MB=${report_Mem}"
             echo "    Memory usage: ${report_MemUsedPercent}"
             echo "      Swap Total: ${report_swapTotal}"
             echo "       Swap Used: ${report_swapTotal}"
       fi;;      
  esac
      
}
################################################################################################################
info_index(){
    #加载信息
    info
    #cpu信息
    info3
    index_portal cpu
    #cpu 状态
    CPU_STATUS
    info3
    #内存信息
    index_portal mem
    info3
    #磁盘信息
    disk_info
    info3
    #网卡信息
    getnetworkstatus
}

check_rpm_iostat(){
  local rpm_name="$1"
  iostat_rpm=`rpm -qa | egrep "${rpm_name}"| wc -l`
  if [ $iostat_rpm -eq 0 ] ;then
    echo "${rpm_name} and net-tools not found,请安装后重试"
    exit 1
  fi
}
info_index

旧版本

#!/bin/bash
#所有者:北城半夏
#当前版本
#v1.0.1
#################################################################################
info3(){
 echo -e "\033[36m----------------------------------------------------------------------------------\033[0m" 
}

info(){
#系统
system=$(hostnamectl | grep System | awk '{print $3}')
kernel_release=$(hostnamectl | grep Kernel | awk -F : '{print $2}'|sed 's/^[ \t]*//g')
Virtualization=$(hostnamectl | grep Virtualization | awk '{print $2}')
server_name=$(hostname)
ipaddr=$(hostname -I)
#cpu
Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
CPU_Arch=$(uname -m)
#负载
update_load=`uptime | awk -F ":" '{print $NF}'|sed 's/^[ \t]*//g'`
#bash
bash_version=`bash --version|grep "GNU bash"|awk '{print $4}'`
#内存
MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB
MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB
MemAvailable=$(grep -i Cached /proc/meminfo | awk '{print $2}' |head -1) #KB
SwapTotal=$(grep SwapTotal /proc/meminfo| awk '{print $2}')
SwapFree=$(grep SwapFree /proc/meminfo| awk '{print $2}') #KB
let MemUsed=MemTotal-MemFree
MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
report_MemTotal="$((MemTotal/1024))" #内存总容量(MB)
report_MemFree="$((MemFree/1024))" #内存剩余(MB)
report_MemAvai="$((MemAvailable/1024))" #使用中(MB)
#swap
report_swapTotal="$((SwapTotal/1024))""MB" #内存总容量(MB)
report_swapFree="$((SwapFree/1024))""MB" #内存剩余(MB)
let Memfree=MemAvailable+MemFree
let MemUsed=MemTotal-Memfree
report_Mem="$((Memfree/1024))""MB"
report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%


}
pd_disk_ssd(){
pd_ssd=`lsblk -d -o name|grep -v NAME`
pd_TYPE=`lsblk -d -o rota|grep -v ROTA`
for i in  ${pd_ssd};do pd_ssd_name[${#pd_ssd_name[*]}]=$i;done
for i in  ${pd_TYPE};do pd_TYPE_name[${#pd_TYPE_name[*]}]=$i;done
printf "\e[34m%-10s %-11s %-11s \e[0m\n" Disk_name Disk_Type 
local num1=$((`echo ${#pd_TYPE_name[*]}`-1))
for pd in `seq 0 ${num1}`
   do
      if [ ${pd_TYPE_name[pd]} -eq 0 ];then
          printf "\e[36m%-10s %-11s %-11s \e[0m\n" ${pd_ssd_name[pd]} SSD
      elif [ ${pd_TYPE_name[pd]} -eq 1 ];then
          printf "\e[36m%-10s %-11s %-11s \e[0m\n" ${pd_ssd_name[pd]}  HDD
      fi
done
info3
}
#网卡信息
getnetworkstatus(){
check_rpm_iostat net-tools
 local ifs=(`ifconfig | egrep "^e|^d|^l" | awk -F: '{print $1}'`)
echo -e "\033[36m网卡基本信息\033[0m" 
 local a=`ifconfig | egrep "^e|^d" |awk -F ':' '{print $1}'`
 local b=`for i in $a;  do  echo $(ifconfig ${i} |grep inet6 |awk '{print $2}') ;done`
 local ipv4=$(for i in $a;do echo "`ifconfig ${i} | awk 'NR==2{print $2}'`" ;done)
 local netmask=$(for i in $a ;do echo `ifconfig  $i|grep netmask|awk '{print $4}'` ;   done)
 local broadcast=$(for i in $a ;do echo `ifconfig  $i|grep broadcast|awk '{print $6}'` ;   done)
 local RX_packets=$(for i in $a ;do echo `ifconfig $i|grep "RX packets"|awk -F '(' '{print $2}'|cut -d ")" -f 1|awk '{print $1}'` ;   done)
 local TX_packets=$(for i in $a ;do echo `ifconfig $i|grep "TX packets"|awk -F '(' '{print $2}'|cut -d ")" -f 1|awk '{print $1}'` ;   done)
 local num=`ifconfig | egrep "^e|^d|^l" |awk -F ':' '{print $1}'|wc -l`
 local num_01=`for((i=0;i<$num;i++)); do echo $i; done`
  #ipv4
  for i in $ipv4 ;do  network_ipv4[${#network_ipv4[*]}]=$i ;done
  #ipv6
  for i in $b;  do network_ipv6[${#network_ipv6[*]}]=$i ; done
  #网卡名
  eth_name=(`ifconfig | egrep "^e|^d" | awk -F: '{print $1}'`)
  #netmask 子网掩码
  for i in $netmask;  do network_netmask[${#network_netmask[*]}]=$i ; done
  #broadcast 默认网关
  for i in $broadcast;  do network_broadcast[${#network_broadcast[*]}]=$i ; done
  #RX packets 出流量
  for i in $RX_packets;  do network_RX_packets[${#network_RX_packets[*]}]=$i ; done
  #TX packets 进流量
  for i in $TX_packets;  do network_TX_packets[${#network_TX_packets[*]}]=$i ; done

 printf "\e[34m%-13s %-15s %-15s %-15s %-10s %-15s %-23s\e[0m\n"  Network IPV4 Netmask Broadcas  RX_packets TX_packets IPV6
 for i in $num_01
  do
    printf "%-13s %-15s %-15s %-15s %-10s %-15s %-23s\n" ${eth_name[i]} ${network_ipv4[i]} ${network_netmask[i]} ${network_broadcast[i]} ${network_RX_packets[i]} ${network_TX_packets[i]} ${network_ipv6[i]}
 done

}
############################################################################################################
disk_info(){
  #磁盘
check_rpm_iostat sysstat
disk_info=`blkid|awk -F':' '{print $1}'|grep -v sr0`
for i in  ${disk_info};do disk_name[${#disk_name[*]}]=$i;done
disk_type_info=`blkid|awk  '{print $1""$NF}'|grep -v sr0|awk -F'"' '{print $2}'`
for i in  ${disk_type_info};do disk_type[${#disk_type[*]}]=$i;done
num=$((`echo ${#disk_name[*]}`-1))
for size in `seq 0 ${num}`
    do
      disk_size_array=`fdisk -l ${disk_name[size]}|grep Disk|awk '{print $3""$4}'|cut -d , -f 1`
      disk_size[${#disk_size[*]}]=$disk_size_array
      diskRead_writ_array=`iostat -d -x  ${disk_name[size]}| grep -v "^$"|tail -1|awk '{print $4"\t"$5"\t"$6}'`
      diskRead_writ[${#diskRead_writ[*]}]=${diskRead_writ_array}
done
echo -e "\033[36m磁盘基本信息\033[0m"
pd_disk_ssd
printf "\e[34m%-28s %-11s %-10s%-10s%-10s%-11s\e[0m\n" Disk_name Size  r/s     w/s    rkB/s Type
for i in `seq 0 $num`
  do
     printf "\e[32m%-28s %-10s  %-10s%-10s%-10s%-10s\e[0m\n" ${disk_name[i]} ${disk_size[i]}  ${diskRead_writ[i]} ${disk_type[i]}
  done
}

################################################################################################################
info_index(){
    info
info3
echo -e "\033[36m系统基本信息\033[0m"
echo "             OS: ${system} ${Virtualization} ${CPU_Arch}"
echo "           Host: ${system}"
echo "         Kernel: ${kernel_release}"
echo "         Uptime: ${update_load}"
echo "       Hostname: ${server_name}"
echo "  Shell version: ${bash_version}"
echo "         IPaddr: ${ipaddr}"
info3
echo -e "\033[36mCPU的基本信息\033[0m"
echo "  Physical_CPUs: $Physical_CPUs"
echo "      Virt_CPUs: $Virt_CPUs"
echo "    CPU_Kernels: $CPU_Kernels"
echo "       CPU_Type: $CPU_Type"
info3
echo -e "\033[36m内存基本信息\033[0m"
echo "          Total: ${report_MemTotal}MB"
echo "          Avail: ${report_MemAvai}MB" 
echo "           Free: ${report_MemFree}MB+${report_MemAvai}MB=${report_Mem}"
echo "   Memory usage: ${report_MemUsedPercent}"
echo "     Swap Total: ${report_swapTotal}"
echo "      Swap Used: ${report_swapTotal}"
info3
disk_info
info3
getnetworkstatus
}
check_rpm_iostat(){
  local rpm_name="$1"
  iostat_rpm=`rpm -qa | egrep "${rpm_name}"| wc -l`
  if [ $iostat_rpm -eq 0 ] ;then
    echo "${rpm_name} and net-tools not found,请安装后重试"
    exit 1
  fi
}
info_index
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shell——查看基础信息脚本 的相关文章

  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • 如何使用 shell 脚本解压所有 .tar.gz?

    我试过这个 DIR path tar gz if ls A DIR 2 gt dev null then echo not gz else tar zxvf path tar gz C path tar fi 如果该文件夹有一个 tar 则
  • 从配置文件中读取分配

    我有配置文件 其中每行都包含用分号分隔的分配 像这样的东西 模仿正常的 shell 分配 VAR1 1 VAR2 2 VAR1 3 VAR2 4 每行包含相同的变量 并且旨在单独处理 这些配置文件都在系统管理员的控制之下 所以使用eval现
  • Bash:替换管道标准输入中的子字符串

    我尝试用新的子字符串替换标准输入中的某个子字符串 在读取几个文件后 我必须从管道获取标准输入cat 然后我想将更改后的字符串向前推到管道中 这是我尝试做的 cat file1 file2 echo cat path to file path
  • 基于文件位置而不是当前工作目录的相对路径[重复]

    这个问题在这里已经有答案了 Given some txt dir cat sh cat sh 的内容如下 cat some txt 然后运行 cat sh inside dir运行时工作正常 dir cat sh与dir才不是 我预计这是由
  • 是否可以为我的 Linux 函数复制命令的制表符补全?

    假设我有一个名为的 bash shell 函数magic 我想定义一个制表符补全功能 magic这将允许magic搭载任何给定命令的选项卡完成功能 如果可用 换句话说 我想要magic能够做这样的事情 magic git
  • 终端从包含空格的变量传递参数

    在终端中如何将包含空格的字符串作为参数传递 它实际上跳过了空格后面的部分 只取第一个单词 word soccer ball shell exec casperjs test js word word 那么我怎样才能转义空白它只运行这个命令
  • 如何输入带有空格的路径?

    我有一个主文件 它使用 从主文件我做一个源 一个带有指向路径的变量的属性文件 属性文件如下所示 TMP PATH COMPANY someProject tmp OUTPUT PATH COMPANY someProject output
  • “设置:非法选项 -”在一台主机上,但在另一台主机上则不然

    我在我的一台 ubuntu 虚拟机中编写了一个 sh 脚本 该脚本工作正常 但是当我尝试在其他虚拟机中运行它时 它不起作用 两个虚拟机应该相同 和bash version两个虚拟机均回复 GNU bash version 4 3 11 1
  • Python 模块 shellquote/unshellquote? [复制]

    这个问题在这里已经有答案了 Python 标准库中是否有任何内容可以正确解析 解解析字符串以在 shell 命令中使用 我正在寻找 perl 的 python 模拟String ShellQuote shell quote print St
  • 如何在 Linux/Unix 上根据文件类型添加文件扩展名?

    这是一个关于 Unix shell 脚本 任何 shell 的问题 但任何其他 标准 脚本语言解决方案也将受到赞赏 我有一个充满文件的目录 其中文件名是这样的哈希值 fd73d0cf8ee68073dce270cf7e770b97 fec8
  • 如何将发布档案转换为 git repo

    我有一个发布档案列表 MyProject 0 9 zip MyProject 1 0 zip MyProject 1 3 tar gz MyProject 2 0 tar gz 每个文件都包含一个与存档同名的文件夹 不带文件扩展名 其中包含
  • Perforce:从命令行“从工作区中删除”?

    The p4v Perforce GUI 客户端 http www perforce com perforce products p4v html具有 操作 gt 从工作空间中删除 菜单命令 该命令可从工作空间中删除受版本控制且未打开进行编
  • 使用 find 和 xargs 交互删除文件

    我正在尝试将一些文件从 find 命令传输到交互式删除命令 以便我可以仔细检查要删除的文件 但我遇到了一些麻烦 find name print0 xargs 0 rm i 我认为上面的方法可行 但我只得到一串 rm remove regul
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • Linux shell 根据第二列对文件进行排序?

    我有一个这样的文件 FirstName FamilyName Address PhoneNumber 如何按 FamilyName 排序 如果这是 UNIX sort k 2 file txt 您可以使用多个 k用于对多列进行排序的标志 例
  • system 和 shell_exec 之间的区别

    有什么区别shell exec and systemPHP 中的方法 两者都采用单个命令行参数并在 PHP 中运行 使用其中一种比另一种更好吗 请参阅此处的解释 http chipmunkninja com Program Executio
  • 如何使用 git hook pre-merge-commit 获取原始合并分支名称

    我正在尝试使用新的 git hook pre merge commit 创建一个特定的脚本 但它没有参数 有什么解决方法可以让我获得正在合并的分支的名称吗 例子 在分支 myBranch 上 我调用 git merge testingBra
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上

随机推荐

  • 在Centos中,程序运行是正常的,外部不能访问,内部可以访问问题解决

    在Centos中 xff0c 程序运行是正常的 xff0c 外部不能访问 xff0c 内部可以访问问题解决 今天遇到一个问题 xff0c 在centos中用python3搭建的一个web服务 xff0c 发现在centos内部可以访问网站
  • 程序设计思维与实践 Week9 作业 A 咕咕东的目录管理器

    题目描述 xff1a 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响 xff0c 时不时发生故障 xff0c 他受不了了 xff0c 想要写一个高效易用零bug的操作系统 这工程量太大了 xff0c 所以他定了一个小目标 xff0c
  • jsoncpp linux平台编译和arm移植

    0x00 下载 http sourceforge net projects jsoncpp 或者 http download csdn net detail chinaeran 8631141 0x01 Linux平台编译 安装 scons
  • 摩斯密码解码脚本

    摩斯密码解码脚本 解题思路 0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0
  • php匹配关键字并跳转页面

    php匹配关键字跳转页面 strstr函数搜索要从目标字符串中搜索的字符串 xff1b strstr函数仅用于检查字符串是否存在 xff1b strstr函数的用法如下 lt php b 61 39 or 39 name 61 GET 39
  • docker常见命令小结

    docker常见命令小结 常见命令 docker ps 查看正在运行的容器 docker exec it 264bb068855e bin bash 进入容器 xff0c 并作出修改 docker commit 3bd0eef03413 l
  • 前端html文件下载,同源与异源下载

    属性说明download下载的资源的名称target打开该连接的方式 self blank href资源的地址 本地 远程地址 a标签跳转 lt DOCTYPE html gt lt html gt lt head gt lt meta c
  • Python图像(字母数字)识别

    本文只针对数字或字母验证码识别 准备工具 tesseract ocr w64 setup v4 1 0 20190314 exepip install pytesseractpip install pillow中文包 tesseract o
  • Python习题

    1 题目 xff1a 编写一个程序 xff0c 使用for循环输出0 10之间的整数 xff1b 代码 xff1a span class token keyword for span i span class token keyword i
  • 面向对象模块和包

    文章目录 1 1 模块1 2 模块的使用2 包 1 1 模块 参考链接 xff1a Python 面向对象 模块和包 来源 xff1a CSDN Python面向对象 模块和包 来源 xff1a CSDN 概念 xff1a 每一个以py为拓
  • SUNDIALS库的编译和使用

    SUNDIALS库的编译和使用 1 简介 SUNDIALS SUite of Nonlinear and DIfferential ALgebraic equation Solvers 是由美国劳伦斯利福摩尔国立实验室 xff08 Lawr
  • 【ing】在Linux虚拟机上安装Sundials库(图文)

    1 Sundials库下载 Sundials下载地址 2 具体步骤 2 1 下载sundials 2 2 0 本次尝试选择sundials 2 2 0进行安装 Sundials文件内容如下 xff1a 2 2 创建安装目录 安装目录名称为
  • 基于docker部署Prometheus

    文章目录 基于Docker搭建Prometheusgitee 介绍Prometheus一 安装运行Prometheus docker版 部署Prometheus1 安装docker联网状态下阿里云离线安装包下载2 下载镜像包3 启动node
  • 程序设计思维与实践 Week11 作业 E 选做题11-1 东东与 ATM

    题目描述 xff1a 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机
  • kubectl edit

    文章目录 kubectl edit官方文档语法示例 kubectl edit 官方文档 使用默认编辑器 编辑服务器上定义的资源 使用命令行工具获取的任何资源都可以使用edit命令编辑 edit命令会打开使用KUBE EDITOR xff0c
  • kubectl exec

    文章目录 kubectl exec通过bash获得pod中某个容器的TTY xff0c 相当于登录容器 命令行 创建一个test文件 xff1a kubectl exec exec命令同样类似于docker的exec命令 xff0c 为在一
  • kubectl describe

    文章目录 describe语法选项 示例描述一个node详细信息描述一个pod描述calico yaml中的资源类型和名称指定的pod描述所有的pod描述所有包含label k8s app 61 calico kube controller
  • k8s自动化安装脚本(kubeadm-1.21.1)

    文章目录 介绍软件架构安装教程更新内容2023 02 102022 10 202022 08 06准备部署包 操作步骤环境准备结构备注 解压部署包修改host文件初始化环境验证ansible配置 安装k8s集群登录master的节点添加no
  • Shell——docker启动yapi

    文章目录 脚本简介脚本注解执行方式脚本内容 脚本简介 基于运维统一脚本中 17 平台管理下的Yapi管理平台部署系统版本Centos7docker环境 脚本注解 该脚本快速部署yapi平台 xff0c 已通过docker commit把对应
  • Shell——查看基础信息脚本

    文章目录 脚本简介脚本注解安装方式执行方式执行结果 脚本内容新版本旧版本 脚本简介 基于运维统一脚本中 xff0c 19 脚本安装下的检查服务器脚本安装使用yum安装 yum仓库 xff0c 系统版本Centos7 脚本注解 该脚本为了快速