shell腳本系統工具箱V2
node
通過兩個多月的學習,最近一段時間總結shell腳本的一些東西,這個系統工具箱應該是暫且the end掉shell腳本的部分,7-8月從新寫一遍運維的東西,加油~
ios
#!/bin/bash ################# #系統工具箱v2 #2019年6月10日14:44:36 ################# #一、判讀系統是redhat,仍是其餘 #二、判讀用戶是否爲root #三、判斷工具是否已安裝 #四、打印工具箱 #判斷系統,根據系統賦不一樣的安裝命令給變量############################## sys1=`cat /etc/redhat-release | cut -d " " -f1` sys2=`cat /etc/issue | cut -d " " -f1` if [[ $sys1 == CentOS || $sys1 == RedHat ]];then R_M=yum elif [ $sys2 == Debian ];then R_M=apt-get else echo "Unrecorded System Name......" exit fi #######################判斷系統########################################## ################################################################# #判斷登錄的用戶是否是root,能夠使用系統變量$LOGNAME user=`echo $LOGNAME` if [ $user != "root" ];then echo 'please use root user action.....' exit fi ###########################判斷登錄用戶######################### ################################################################# #判斷有無vmstat,iotp工具,沒有則安裝 which vmstat &>/dev/null if [ $? -ne 0 ];then $R_M install vmstat -y fi which iotop &>/dev/null if [ $? -ne 0 ];then $R_M install iotop -y fi ############################################################### #################################################################### #cpu_load函數,下面case語句會調用 cpu_load() { cpu_sy=`vmstat | awk '{ if(NR==3) print $14}'` cpu_us=`vmstat | awk '{ if(NR==3) print $15}'` cpu_wa=`vmstat | awk '{ if(NR==3) print $16}'` for i in `seq 3` do echo -e "\e[1;35m Real-time value $i \e[1;0m" echo -e "\e[1;34m system time $cpu_sy \e[1;0m" echo -e "\e[1;34m cpu free ${cpu_us}% \e[1;0m" echo -e "\e[1;34m io wait $cpu_wa \e[1;0m" sleep 1 done } ######################################################################### #disk_load函數,下面case語句會調用 disk_load() { util=`iostat -x -k | awk 'BEGIN{ OFS=": "} /^[v|s]/ { print $1,$NF"%"}'` readi=`iostat -x -k | awk 'BEGIN{ OFS=": "} /^[s|v]/ { print $1,$4"kb/s" }'` write=`iostat -x -k | awk 'BEGIN{ OFS=": "} /^[s|v]/ { print $1,$5"kb/s" }'` echo "util is:\n $util" echo "read is:\n$readi" echo "write is:\n$write" } ###################################################################### #這個PS3實際是系統變量,能夠自行定義,這裏是爲了美觀,否則輸出的格式爲#?,比較醜 PS3="please enter your choice(1~9): " #while循環是重複去打印提示信息。這裏的提示信息沒有使用printf,也沒有使用EOF,而是select。這種格式很像for i in ... do done,不過格式不能自定義, 只能按照它的1,2,3..... 中間穿插case語句匹配select語句中的選項。 while : do select info in cpu_load disk_load disk_use disk_inode mem_use tcp_status cpu_top10 mem_top10 quit do clear case $info in cpu_load) cpu_load break ;; disk_load) disk_load break ;; disk_use) df -h break ;; disk_inode) echo "disk inode" break ;; mem_use) free -m break ;; tcp_status) ss -an |grep ESTAB | grep '\<22\>' break ;; cpu_top10) ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3| head -10 break ;; mem_top10) ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -10 break ;; quit) exit ;; *) echo "error,please enter 1-9" break esac done done