使用場景:Linux中有幾個命令可用於獲取系統信息,例如處理器信息、製造商名稱和序列號等。但您可以編寫Shell腳本以根據需要自定義輸出,我們想到了一個新的Shell腳本,該腳本在您每次登錄Shell時向您顯示所需的系統信息。
該腳本設計分爲六個部分:
第1部分:基本系統信息。
第2部分:CPU/內存的當前使用情況。
第3部分:磁盤使用率>80%。
第4部分:列表系統WWN詳細信息。
第5部分:Oracle數據庫實例。
第6部分:可用的軟件包更新。
我們已根據需要向每個領域添加了潛在信息,您可以根據需要進一步定製此腳本。
使用效果:每次登錄到Shell時查看Linux上的系統信息
每當您登錄Shell程序時,此基本腳本都會將系統信息顯示到您的終端上。
Bash腳本代碼如下:
1 #vi /opt/scripts/system-info.sh 2 3 #!/bin/bash 4 5 echo -e "-------------------------------System Information----------------------------" 6 7 echo -e "Hostname:\t\t"`hostname` 8 9 echo -e "uptime:\t\t\t"`uptime | awk '{print $3,$4}' | sed 's/,//'` 10 11 echo -e "Manufacturer:\t\t"`cat /sys/class/dmi/id/chassis_vendor` 12 13 echo -e "Product Name:\t\t"`cat /sys/class/dmi/id/product_name` 14 15 echo -e "Version:\t\t"`cat /sys/class/dmi/id/product_version` 16 17 echo -e "Serial Number:\t\t"`cat /sys/class/dmi/id/product_serial` 18 19 echo -e "Machine Type:\t\t"`vserver=$(lscpu | grep Hypervisor | wc -l); if [ $vserver -gt 0 ]; then echo "VM"; else echo "Physical"; fi` 20 21 echo -e "Operating System:\t"`hostnamectl | grep "Operating System" | cut -d ' ' -f5-` 22 23 echo -e "Kernel:\t\t\t"`uname -r` 24 25 echo -e "Architecture:\t\t"`arch` 26 27 echo -e "Processor Name:\t\t"`awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//'` 28 29 echo -e "Active User:\t\t"`w | cut -d ' ' -f1 | grep -v USER | xargs -n1` 30 31 echo -e "System Main IP:\t\t"`hostname -I` 32 33 echo "" 34 35 echo -e "-------------------------------CPU/Memory Usage------------------------------" 36 37 echo -e "Memory Usage:\t"`free | awk '/Mem/{printf("%.2f%"), $3/$2*100}'` 38 39 echo -e "Swap Usage:\t"`free | awk '/Swap/{printf("%.2f%"), $3/$2*100}'` 40 41 echo -e "CPU Usage:\t"`cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' | awk '{print $0}' | head -1` 42 43 echo "" 44 45 echo -e "-------------------------------Disk Usage >80%-------------------------------" 46 47 df -Ph | sed s/%//g | awk '{ if($5 > 80) print $0;}' 48 49 echo "" 50 51 echo -e "-------------------------------For WWN Details-------------------------------" 52 53 vserver=$(lscpu | grep Hypervisor | wc -l) 54 55 if [ $vserver -gt 0 ] 56 57 then 58 59 echo "$(hostname) is a VM" 60 61 else 62 63 cat /sys/class/fc_host/host?/port_name 64 65 fi 66 67 echo "" 68 69 echo -e "-------------------------------Oracle DB Instances---------------------------" 70 71 if id oracle >/dev/null 2>&1; then 72 73 /bin/ps -ef|grep pmon 74 75 then 76 77 else 78 79 echo "oracle user does not exist on $(hostname)" 80 81 fi 82 83 echo "" 84 85 if (( $(cat /etc/*-release | grep -w "Oracle|Red Hat|CentOS|Fedora" | wc -l) > 0 )) 86 87 then 88 89 echo -e "-------------------------------Package Updates-------------------------------" 90 91 yum updateinfo summary | grep 'Security|Bugfix|Enhancement' 92 93 echo -e "-----------------------------------------------------------------------------" 94 95 else 96 97 echo -e "-------------------------------Package Updates-------------------------------" 98 99 cat /var/lib/update-notifier/updates-available 100 101 echo -e "-----------------------------------------------------------------------------" 102 103 fi 104 105 注:到這腳本結束。 106 107 將以上腳本添加到文件後,設置“system-info.sh”文件的可執行權限: 108 109 # chmod +x ~root/system-info.sh 110 111 腳本準備好後,在基於RHEL的系統CentOS、Oracle Linux和Fedora中的“.bash_profile”文件末尾添加文件路徑: 112 113 # echo "/root/system-info.sh" >> ~root/.bash_profile 114 115 參考:echo命令_Linux echo命令使用詳解:輸出指定的字符串或者變量。 116 117 要使此更改生效,請運行以下命令: 118 119 # source ~root/.bash_profile 120 121 對於基於Debian的系統,您需要將文件路徑添加到“.profile”文件: 122 123 # echo "/root/system-info.sh" >> ~root/.profile 124 125 運行以下命令以使更改生效: 126 127 # source ~root/.profile
運行上面的“source”命令時,您可能已經看到類似下面的輸出,如下圖所示。從下一次開始,每次登錄shell時,您都將獲得這些信息。
顯示的數據有:基本的系統信息、CPU/內存使用情況、磁盤使用率>80%、關於WWN詳細信息、Oracle數據庫實例,同時還包括軟件包更新。
當然,您可以根據需要隨時手動運行此腳本。