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——查看基础信息脚本 的相关文章

  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • 将文件从不同目录复制到公共目录

    我有很多目录 其中包含 c文件 我想复制全部 c使用 shell 脚本将不同目录中的文件复制到单个目录 find name c exec cp t tmp 启动当前目录中的所有项目 递归 获取名称结尾的项目 c 将这些项目复制到 tmp 如
  • shell脚本中的\r字符

    我在尝试执行 shell 脚本时收到以下错误 r command not found line 2 请提出同样的解决方案 以下是脚本中使用的初始行 bin sh if lt 1 then echo ERROR Environment arg
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud
  • if [ -z "${FILE_LIST}" ] 中的 -z 是什么

    遇到了这个 什么是 z在 shell 脚本中if z FILE LIST 是相同的test And man test gives z STRING the length of STRING is zero 注意 在某些平台上 是一个符号链接
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • 如何查看正在运行的 tcsh 版本?

    如何查看我的 UNIX 终端中运行的 tcsh 的当前版本 看着那 这version多变的 echo version tcsh 6 14 00 Astron 2005 03 25 i386 intel linux options wide
  • 通过 sed 使用 unix 变量将数据附加到每行末尾[重复]

    这个问题在这里已经有答案了 我有一个文件 我想使用 SED 将值附加到每行末尾的 unix 变量中 我已经通过 AWK 实现了这一点 但我想在 SED 中实现 像这样的东西 我已经尝试过以下命令 但它不起作用 sed i s BATCH R
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • bash循环跳过注释行

    我正在循环文件中的行 我只需要跳过以 开头的行 我怎么做 bin sh while read line do if line doesn t start with then echo line fi done lt tmp myfile 谢
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 如何让 STDOUT 和 STDERR 都转到终端和日志文件?

    我有一个脚本 将由非技术用户交互式运行 该脚本将状态更新写入 STDOUT 以便用户可以确定脚本运行正常 我希望将Stdout和STDERR重定向到终端 以便用户可以看到脚本正在工作 并查看是否存在问题 我还希望将两个流都重定向到日志文件
  • 无法使用 Java ProcessBuilder 启动带参数的 shell 脚本

    我正在尝试使用 ProcessBuilder 执行带有命令行参数的 shell 脚本 该 shell 脚本又调用使用此参数的其他两个 shell 脚本 第一个 shell 脚本运行良好 但当第二个 shell 脚本启动时 它返回退出代码 1
  • Bash 参数引号和 eval

    我编写了一个 bash 日志记录库 用我公司当前正在使用的一些复杂脚本来实现 在进行日志调用时 我一直致力于提供调用脚本的脚本文件名 BASH SOURCE 和行号 LINENO 但是 我不想依赖用户或实现脚本来将这两个变量作为参数传递 如
  • 这种 bash 文件名提取技术有何用途?

    我有一部分 bash 脚本正在获取不带扩展名的文件名 但我试图了解这里到底发生了什么 是做什么用的 有人可以详细说明 bash 在幕后做了什么吗 如何在一般基础上使用该技术 bin bash for src in tif do txt sr
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr

随机推荐

  • 在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 脚本注解 该脚本为了快速