linux100day(day8)--shell监控脚本练习
生活随笔
收集整理的這篇文章主要介紹了
linux100day(day8)--shell监控脚本练习
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這是一個大型的監(jiān)控腳本,方便于查看硬盤,網(wǎng)絡(luò),負(fù)載,內(nèi)核版本等系統(tǒng)信息。
?本腳本來自于github的atarallo,我對腳本做出了改編和一些注釋,盡量讓新手也能理解,這個腳本邏輯清楚簡單,適合用于練習(xí)。
腳本運行效果
腳本代碼
1 #!/bin/bash 2 # Author: fissure 3 # Blog: https://home.cnblogs.com/Y139147/ 4 # Time: 2019-09-06 09:50:54 5 # Name: system_monitor.sh 6 # Version: v1.0 7 # Description: This is a Script. 8 # Linux大型shell腳本實現(xiàn)系統(tǒng)監(jiān)控 9 while getopts ivh name 10 # 獲取用戶傳遞的參數(shù),如 monitor -i -h之類 11 do 12 case $name in 13 i)ioption=1;; 14 #安裝 15 v)voption=1;; 16 #查看版本信息 17 h)hoption=1;; 18 #查看幫助 19 *)echo "請輸入正確的參數(shù)";; 20 esac 21 done 22 # 23 #安裝選項 24 if [[ ! -z $ioption ]];then 25 { 26 wd=$(pwd) 27 basename "$(test -L "$0"&& readlink "$0"||echo "$0")" > /tmp/scriptname 28 #判斷是否存在并為一個連接文件,如果存在,通過readlink來找到他的路徑 29 #如果不存在一個連接文件,就輸出文件路徑 30 #使用basename取出文件名 31 #$0表示shell本身路徑 32 scriptname=$(echo -e -n $wd/ && cat /tmp/scriptname) 33 su -c "cp $scriptname /usr/bin/monitor" root && echo "腳本安裝成功,現(xiàn)在可以運行指令"||echo"安裝失敗" 34 #su -c 表示在執(zhí)行復(fù)制時變更賬號為root,執(zhí)行完畢變回原來的用戶 35 } 36 fi 37 # 38 #查看版本信息 39 if [[ ! -z $voption ]];then 40 { 41 echo -e "系統(tǒng)監(jiān)控器v1.0版本\n感謝寧的使用熬(*^_^*)" 42 } 43 fi 44 # 45 #幫助選項 46 if [[ ! -z $hoption ]];then 47 { 48 echo -e " -i 安裝腳本" 49 echo -e " -v 查看版本" 50 echo -e " -h 查看幫助" 51 } 52 fi 53 54 if [[ $# -eq 0 ]];then 55 { 56 #清屏 57 clear 58 #使用unset釋放以定義過的變量 59 unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage 60 #恢復(fù)為初始顏色 61 tecreset=$(tput sgr0) 62 #檢查網(wǎng)絡(luò)連通性 63 ping -c 1 www.baidu.com &> /dev/null && echo -e '\E[32m'"網(wǎng)絡(luò)"$tecreset "連通"||echo -e '\E[32m'"網(wǎng)絡(luò)"$tecreset "不通" 64 #查看系統(tǒng)類型 65 os=$(uname -o) 66 #查看操作系統(tǒng)的版本和名稱 67 OS=`uname -s` 68 REV=`uname -r` 69 MACH=`uname -m` 70 71 GetVersionFromFile() 72 { 73 VERSION=`cat $1 | tr "\n" ' '|sed s/.*VERSION.*=\ //` 74 } 75 #Sun公司操作系統(tǒng) 76 if [ "${OS}" = "SunOS" ];then 77 OS=Solaris 78 #顯示處理器類型 79 ARCH=`uname -p` 80 OSSTR="${OS} ${REV}(${ARCH} `uname -v`)" 81 #IBM開發(fā)的AIX系統(tǒng) 82 elif [ "${OS}" = "AIX" ];then 83 OSSTR="${OS} `oslevel`(`oslevel -r`)" 84 #Linux 85 elif [ "${OS}" = "Linux" ];then 86 KERNEL=`uname -r` 87 if [ -f /etc/redhat-release ];then 88 DIST='RedHat' 89 PSUEDONAME=`cat /etc/redhat-release |sed s/.*\(//|sed s/\)//` 90 REV=`cat /etc/redhat-release |sed s/.*release\ // |sed s/\ .*//` 91 elif [ -f /etc/SUSE-release];then 92 DIST=`cat /etc/SuSE-release|tr "\n" ' '|sed s/VERSION.*//` 93 REV=`cat /etc/SuSE-release|tr "\n" ' '| sed s/.*=\ //` 94 elif [ -f /etc/mandrake-release ];then 95 DIST='Mandrake' 96 PSUEDNAME=`cat /etc/mandrake-release | sed s/.*\(//| sed s/\)//` 97 REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//` 98 elif [ -f /etc/debian_version ];then 99 DIST="Debian `car /etc/debian_version`" 100 REV="" 101 102 fi 103 if ${OSSTR}[ -f /etc/UnitedLinux-release ];then 104 DIST="${DIST}[`cat /etc/UnitedLinux-release|tr "\n" ' '|sed s/VERSION.*//`]" 105 fi 106 OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})" 107 fi 108 } 109 #查看操作系統(tǒng) 110 echo -e '\E[32m'"操作系統(tǒng)版本:"$tecreset $OSSTR 111 #查看系統(tǒng)的類型 112 architecture=$(uname -m) 113 echo -e '\E[32m'"系統(tǒng)類型:" $tecreset $architecture 114 #查看內(nèi)核版本 115 kernelrelease=$(uname -r) 116 echo -e '\E[32m'"內(nèi)核版本:" $tecreset $kernelrelease 117 #查看主機名 118 echo -e '\E[32m'"主機名:" $tecreset $HOSTNAME 119 #查看內(nèi)網(wǎng)ip 120 internalip=$(hostname -I) 121 echo -e '\E[32m'"內(nèi)網(wǎng)IP :" $tecreset $internalip 122 #查看DNS 123 nameservers=$(cat /etc/resolv.conf | sed '1 d'|awk '{print $2}') 124 echo -e '\E[32m'"DNS:" $tecreset $nameservers 125 #使用who命令查看當(dāng)前登陸用戶 126 who>/tmp/who 127 echo -e '\E[32m'"登陸用戶" $tecreset && cat /tmp/who 128 #查看內(nèi)存使用情況 129 free -h >/tmp/ramcache 130 echo -e '\E[32m'"內(nèi)存使用情況" $tecreset && cat /tmp/ramcache |grep -v "Swap" 131 #反選Mem 132 echo -e '\E[32m'"交換分區(qū)使用情況" $tecreset &&cat /tmp/ramcache |grep -v "Mem" 133 #查看磁盤使用 134 df -h |grep 'Filesystem\|/dev/sda*'> /tmp/diskusage 135 echo -e '\E[32m'"磁盤情況" $tecreset && cat /tmp/diskusage 136 #查看負(fù)載,top -n指定迭代次數(shù)為一次,-b表示在批處理模式啟動,從頂端一直輸出到末端,方便輸出到其他程序和文件 137 loadaverage=$(top -n 1 -b|grep "load average:"|awk {'print $10 $11 $12'}|sed s/,//|sed s/.*://) 138 #換算成百分?jǐn)?shù) 139 loadaa=$(awk 'BEGIN{print '$loadaverage*100'}') 140 echo -e '\E[32m'"平均負(fù)載" $tecreset $loadaa"%" 141 #查看系統(tǒng)運行時間 142 tecuptime=$(uptime |awk '{print $3 $4}'|cut -d"," -f 1) 143 echo -e '\E[32m'"系統(tǒng)運行時間:"$tecreset $tecuptime 144 #釋放變量 145 unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage 146 #刪除臨時文件 147 rm /tmp/who /tmp/ramcache /tmp/diskusage 148 fi腳本運行方式
1、為腳本添加權(quán)限
2、./腳本名 [-i/-h/-v] -i? ? 安裝腳本
3、輸入monitor運行程序
出處,作者的github?https://github.com/atarallo/TECMINT_MONITOR
本腳本僅用于學(xué)習(xí)交流
?
轉(zhuǎn)載于:https://www.cnblogs.com/Y139147/p/11479743.html
總結(jié)
以上是生活随笔為你收集整理的linux100day(day8)--shell监控脚本练习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The Preliminary Cont
- 下一篇: Unix环境高级编程学习笔记(五)