shell 腳本練習

閒來無事,想練習下shell腳本,因而網上找題目,找到如下這麼一條題shell

要求:bash

用戶輸入A;B;C;D;E;F;Gide

輸入A的話就查看/etc/passwd最後5個系統用戶,只要顯示用戶名和UID就好了,其餘不要函數

輸入B的話就顯示系統開機時間多久了spa

輸入C的話就判斷當前磁盤根目錄使用狀況是否超過50%,若是超過50%就顯示「disk space is used over 50%」;若是沒超過50%就顯示「disk space is user below 50%」進程

輸入D的話就顯示出系統當前處於LISTEN狀態的PID進程程序名稱,以「program-name(pid)」這種形式顯示。ip

輸入E的話獲取系統的IP和掩碼,以"IP/NETMASK"形式顯示input

輸入F的話添加系統用戶,完了後添加該用戶密碼(記得給以提示操做)it

輸入G的話顯示系統使用率最多的10條命令,還有使用的次數class

還有一點,執行腳本的時候要說清楚下ABCDEFG各個選項的做用!

若是輸入其餘非ABCDEFG選項的錯誤選項,就顯示「your input is wrong」消息


腳本:

這裏每一個選項都用了函數來表示

#!/bin/bash

#author dennis.xie

#!/bin/bash

#菜單

cat <<EOF

 (A)輸入A查看/etc/password最後5個用戶。

 (B)輸入B的話就顯示系統開機時間多久了

 (C)輸入C的話就判斷當前磁盤根目錄使用狀況是否超過50%,若是超過50%就顯示「disk space is used over 50%」;若是沒超過50%就顯示「disk space is user below 50%」

 (D)輸入D的話就顯示出系統當前處於LISTEN狀態的PID進程程序名稱,以「program-name(pid)」這種形式顯示。

 (E)輸入E的話獲取系統的IP和掩碼,以"IP/NETMASK"形式顯示

 (F)輸入F的話添加系統用戶,完了後添加該用戶密碼(記得給以提示操做)

 (G)輸入G的話顯示系統使用率最多的10條命令,還有使用的次數

EOF

choice(){

read -p "please input you choice (A|B|C|D|E|F|G)" _VAR

case $_VAR in

     A)

     A

     ;;

     B)

     B

     ;;

     C)

     C

     ;;

     D)

     D

      ;;

     E)

     E

     ;;

     F)

     F

     ;;

     G)

     G

      ;;

     *)

     echo "your input is wrong"

     choice

     ;;

 esac

}

#A選項

A(){

tail -n 5 /etc/passwd | awk -F":" '{print $1,$3}'


}

#B選項

B(){

uptime

}

#C選項

C(){

_use=$(df -h / | tail -n 1 | awk  '{print +$5}' )

if [ "${_use}" -gt 50 ]

then

 echo "disk space is user over 50%"

else

echo "disk space is use below 50%"

fi

}

#D選項

D()

{

lsof -i -P | awk '$NF~/LISTEN/ && NR>2{print $1"("$2")" | "sort"}' | uniq

}

#E選項

E(){

ip addr | grep eth | grep inet | awk '{ print $2}' 

}

#F選項

F(){

uname(){

read -p "add user,pls input the user's name" _name

if [ -z $_name ]

then

uname

else

useradd ${_name}

upasswd(){

read -p "pls input password for user" _passwd

if [ -z $_passwd ]

then

upasswd

else


echo ${_passwd} |passwd --stdin ${_name}

fi

}

upasswd

fi

}

uname

}

#G選項

G(){

#顯示系統使用率最多的10條命令,還有使用的次數,我認爲是整條命令

grep -v "#" ~/.bash_history |awk '{++a[$0]}END{for(i in a)print a[i],i| "sort -k 1 -nr"}' | head

}

choice

相關文章
相關標籤/搜索