天天看點

一個bash腳本-檢測系統運作狀态

最近寫了一個腳本,主要是檢測目前系統的運作狀況。腳本内容如下及附帶運作結果:

<code>#!/bin/bash</code>

<code># system info report</code>

<code>def_colors () {</code>

<code>    </code><code># Attributes</code>

<code>    </code><code>normal=</code><code>'\033[0m'</code><code>; bold=</code><code>'\033[1m'</code><code>; dim=</code><code>'\033[2m'</code><code>; under=</code><code>'\033[4m'</code>

<code>    </code><code>italic=</code><code>'033[3m'</code><code>;  notalic=</code><code>'\033[23m'</code><code>; blink=</code><code>'\033[5m'</code><code>;</code>

<code>    </code><code>reverse=</code><code>'\033[7m'</code><code>; conceal=</code><code>'\033[8m'</code><code>; nobold=</code><code>'\033[22m'</code><code>;</code>

<code>    </code><code>nounder=</code><code>'\033[24m'</code><code>; noblink=</code><code>'\033[25m'</code>

<code>    </code><code># Foreground</code>

<code>    </code><code>black=</code><code>'\033[30m'</code><code>; red=</code><code>'\033[31m'</code><code>; green=</code><code>'\033[32m'</code><code>; yellow=</code><code>'\033[33m'</code>

<code>    </code><code>blue=</code><code>'\033[34m'</code><code>; magenta=</code><code>'\033[35m'</code><code>; cyan=</code><code>'\033[36m'</code><code>; white=</code><code>'\033[37m'</code>

<code>    </code><code># Background</code>

<code>    </code><code>bblack=</code><code>'\033[40m'</code><code>; bred=</code><code>'\033[41m'</code>

<code>    </code><code>bgreen=</code><code>'\033[42m'</code><code>; byellow=</code><code>'\033[43m'</code>

<code>    </code><code>bblue=</code><code>'\033[44m'</code><code>; bmagenta=</code><code>'\033[45m'</code>

<code>    </code><code>bcyan=</code><code>'\033[46m'</code><code>; bwhite=</code><code>'\033[47m'</code>

<code>}</code>

<code>def_colors</code>

<code>clear</code>

<code>hostname</code><code>=`</code><code>cat</code> <code>/proc/sys/kernel/hostname</code><code>`</code>

<code>echo</code>

<code>echo</code> <code>-e </code><code>"System Report for $yellow$hostname$normal on `date`"</code>

<code>prcessor=`</code><code>grep</code> <code>'model name'</code> <code>/proc/cpuinfo</code> <code>| </code><code>cut</code> <code>-d: -f2 | </code><code>cut</code> <code>-c2-`</code>

<code>nisdomain=`</code><code>cat</code> <code>/proc/sys/kernel/domainname</code><code>`</code>

<code>cache=`</code><code>grep</code> <code>'cache size'</code> <code>/proc/cpuinfo</code> <code>| </code><code>awk</code> <code>'{print $4, $5}'</code><code>`</code>

<code>bogomips=`</code><code>grep</code> <code>'bogomips'</code> <code>/proc/cpuinfo</code> <code>| </code><code>awk</code> <code>'{print $3}'</code><code>`</code>

<code>vendor=`</code><code>grep</code> <code>'vendor_id'</code> <code>/proc/cpuinfo</code><code>`</code>

<code>echo</code> <code>-e </code><code>"Hostname: $yellow$hostname$normal NIS Domain: $white$nisdomain$normal"</code>

<code>if</code> <code>[ </code><code>"`echo $vedner | grep -i intel`"</code> <code>]</code>

<code>then</code>

<code>    </code><code>cpu_color=$blue</code>

<code>elif</code> <code>[ </code><code>"`echo $vender | grep -i amd`"</code> <code>]</code>

<code>    </code><code>cpu_color=$green</code>

<code>fi</code>

<code>echo</code> <code>-e </code><code>"Processor: $cpu_color$processor$normal"</code>

<code>echo</code> <code>-e </code><code>"Running at $white$bogomips$normal bogomips with $white$cache$normal cache"</code>

<code>ostype=`</code><code>cat</code> <code>/proc/sys/kernel/ostype</code><code>`</code>

<code>osrelease=`</code><code>cat</code> <code>/proc/sys/kernel/osrelease</code><code>`</code>

<code>rev=`</code><code>cat</code> <code>/proc/sys/kernel/version</code> <code>| </code><code>awk</code> <code>'{print $1}'</code><code>`</code>

<code>da_date=`</code><code>cat</code> <code>/proc/sys/kernel/version</code> <code>| </code><code>cut</code> <code>-d\  -f2-`</code>

<code>upsec=`</code><code>awk</code> <code>'{print $1}'</code> <code>/proc/uptime</code><code>`</code>

<code>uptime=`</code><code>echo</code> <code>"scale=2;$upsec/86400"</code> <code>| </code><code>bc</code><code>`</code>

<code>echo</code> <code>-e </code><code>"OS Type: $white${ostype}$normal"</code>

<code>echo</code> <code>-e </code><code>"Kernel:  $white${osrelease}$normal"</code>

<code>echo</code> <code>-e </code><code>"Kernel Compile $white${rev}$normal on $white${da_date}$normal"</code>

<code>echo</code> <code>-e </code><code>"Uptime: $magenta${uptime}$normal days"</code>

<code>echo</code> 

<code>echo</code> <code>-e </code><code>"${red}Network Statistics:${normal}"</code>

<code>echo</code> <code>"-------------------"</code>

<code>iface_list=`ip addr |</code><code>grep</code> <code>-A1 -B1 </code><code>"link/ether"</code><code>`</code>

<code>echo</code> <code>${iface_list} |</code><code>awk</code> <code>'{</code>

<code>if</code> <code>(NF == 0) {</code>

<code>  </code><code>print </code><code>"No Network Info"</code><code>;</code>

<code>} </code><code>else</code> <code>{</code>

<code>  </code><code>num_of_iface = int(NF / 22);</code>

<code>  </code><code>for</code> <code>(i = 1; i &lt;= num_of_iface; i++) {</code>

<code>    </code><code>print $(23*i-21), $(23*i-10), $(23*i-6);</code>

<code>  </code><code>}</code>

<code>}'</code>

<code>echo</code> <code>-e </code><code>"${red}Memory Statistics:${normal}"</code>

<code>echo</code> <code>"------------------"</code>

<code># statistics the memory info</code>

<code>set</code> <code>`</code><code>grep</code> <code>MemTotal </code><code>/proc/meminfo</code><code>`</code>

<code>tot_mem=$2; </code>

<code>tot_mem_unit=$3</code>

<code>set</code> <code>`</code><code>grep</code> <code>MemFree </code><code>/proc/meminfo</code><code>`</code>

<code>free_mem=$2; </code>

<code>fre_mem_unit=$3</code>

<code>perc_mem_used=$((100-(100*free_mem</code><code>/tot_mem</code><code>)))</code>

<code>set</code> <code>`</code><code>grep</code> <code>SwapTotal </code><code>/proc/meminfo</code><code>`</code>

<code>tot_swap=$2; </code>

<code>tot_swap_unit=$3</code>

<code>set</code> <code>`</code><code>grep</code> <code>SwapFree </code><code>/proc/meminfo</code><code>`</code>

<code>free_swap=$2</code>

<code>free_swap_unit=$3</code>

<code>perc_swap_used=$((100-(100*free_swap</code><code>/tot_swap</code><code>)))</code>

<code>if</code> <code>[ $perc_mem_used -lt 80 ]</code>

<code>    </code><code>mem_color=$green</code>

<code>elif</code> <code>[ $perc_mem_used -</code><code>ge</code> <code>80 -a $perc_mem_used -lt 90 ]</code>

<code>    </code><code>mem_color=$yellow</code>

<code>else</code>

<code>    </code><code>mem_color=$red</code>

<code>if</code> <code>[ $perc_swap_used -lt 80 ]</code>

<code>    </code><code>swap_color=$green</code>

<code>elif</code> <code>[ $perc_swap_used -</code><code>ge</code> <code>80 -a $perc_swap_used -lt 90 ]</code>

<code>    </code><code>swap_color=$yellow</code>

<code>    </code><code>swap_color=$red</code>

<code>echo</code> <code>-e </code><code>"Memory:\n-------\nTotal:\t$white${tot_mem}$normal ${tot_mem_unit}\nFree:\t$white${free_mem}$normal ${fre_mem_unit}\nUsed:\t${mem_color}${perc_mem_used}%$normal"</code>

<code>echo</code> <code>-e "Swap:\n-----\nTotal:\t$white${tot_swap}$normal ${tot_swap_unit}\nFree:\t$white${free_swap}$normal ${free_swap_unit}\</code>

<code>${fre_swap_unit}\nUsed:\t${swap_color}${perc_swap_used}%$normal"</code>

<code># statistics the load average info</code>

<code>set</code> <code>`</code><code>cat</code> <code>/proc/loadavg</code><code>`</code>

<code>one_min=$1</code>

<code>five_min=$2</code>

<code>fifteen_min=$3</code>

<code>echo</code> <code>-e </code><code>"${red}Load Adverage:${normal}"</code>

<code>echo</code> <code>"---------------"</code>

<code>echo</code> <code>"1min 5min 15min"</code>

<code>echo</code> <code>"---- ---- -----"</code>

<code>for</code> <code>ave </code><code>in</code> <code>$one_min $five_min $fifteen_min</code>

<code>do</code>

<code>    </code><code>int_ave=`</code><code>echo</code> <code>$ave | </code><code>cut</code> <code>-d. -f1`</code>

<code>    </code><code>if</code> <code>[ $int_ave -lt 1 ]</code>

<code>    </code><code>then</code>

<code>        </code><code>echo</code> <code>-en </code><code>"$green$ave$normal "</code>

<code>    </code><code>elif</code> <code>[ $int_ave -</code><code>ge</code> <code>1 -a $int_ave -lt 5 ]</code>

<code>        </code><code>echo</code> <code>-en </code><code>"$yellow$ave$normal "</code>

<code>    </code><code>else</code>

<code>        </code><code>echo</code> <code>-en </code><code>"$red$ave$normal"</code>

<code>    </code><code>fi</code>

<code>done</code>

<code># statistics the process info</code>

<code>running=0;</code>

<code>sleeping=0;</code>

<code>stopped=0;</code>

<code>zombie=0</code>

<code>for</code> <code>pid </code><code>in</code> <code>/proc/</code><code>[1-9]*</code>

<code>    </code><code>procs=$((procs+1))</code>

<code>    </code><code>stat=`</code><code>awk</code> <code>'{print $3}'</code> <code>${pid}</code><code>/stat</code><code>`</code>

<code>    </code><code>case</code> <code>$stat </code><code>in</code>

<code>        </code><code>R) running=$((running+1))</code>

<code>           </code><code>;;</code>

<code>        </code><code>S) sleeping=$((sleeping+1))</code>

<code>        </code><code>T) stopped=$((stopped+1))</code>

<code>        </code><code>Z) zombie=$((zombie+1))</code>

<code>    </code><code>esac</code>

<code>echo</code> <code>-e </code><code>"${red}Process Counting:${normal}"</code>

<code>echo</code> <code>"-----------------"</code>

<code>echo</code> <code>-e "$white${procs}$normal \t total\n$white$running$normal \t running\n\</code>

<code>$white${sleeping}$normal \t sleeping\n$white${stopped}$normal \t stopped\n\</code>

<code>$white$zombie$normal \t zombie"</code>

運作結果為:

<code># bash sys_info.sh </code>

<code>System Report </code><code>for</code> <code>master on Thu Oct 15 08:33:02 CST 2015</code>

<code>Hostname: master NIS Domain: (none)</code>

<code>Processor: </code>

<code>Running at 4389.86 bogomips with 3072 KB cache</code>

<code>OS Type: Linux</code>

<code>Kernel:  2.6.32-573.3.1.el6.x86_64</code>

<code>Kernel Compile </code><code>#1 on SMP Thu Aug 13 22:55:16 UTC 2015</code>

<code>Uptime: .06 days</code>

<code>Network Statistics:</code>

<code>-------------------</code>

<code>eth0: 08:00:27:00:00:00 10.11.1.51</code><code>/24</code>

<code>eth1: 08:00:27:00:00:01 192.168.56.108</code><code>/24</code>

<code>Memory Statistics:</code>

<code>------------------</code>

<code>Memory:</code>

<code>-------</code>

<code>Total:  1020176 kB</code>

<code>Free:   499448 kB</code>

<code>Used:   52%</code>

<code>Swap:</code>

<code>-----</code>

<code>Total:  1015804 kB</code>

<code>Free:   1015804 kB</code>

<code>Used:   0%</code>

<code>Load Adverage:</code>

<code>---------------</code>

<code>1min 5min 15min</code>

<code>---- ---- -----</code>

<code>0.06 0.02 0.00 </code>

<code>Process Counting:</code>

<code>-----------------</code>

<code>104     total</code>

<code>0   running</code>

<code>104     sleeping</code>

<code>0   stopped</code>

<code>0   zombie</code>

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

<a href="http://blog.51cto.com/search/result?q=bash" target="_blank">bash</a>

本文轉自    bigstone2012   51CTO部落格,原文連結:http://blog.51cto.com/lavenliu/1703252