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

相关文章
相关标签/搜索