shell脚本实例二

时间:2021-01-21 15:34:48

练习题一:对已经存在的用户做密码的修改等操作

vim  user_ctrl.sh                 ##进行如下编写

#!/bin/bash
Show()
{
        read -p "请输入您想操作的用户名或输入exit退出:" User
        [ "$User" = "exit" ]&&{
                echo bye!!
                exit
        }||{
                TestUser  $User
        }
}
TestUser()
{
        U=$1
        user=`getent  passwd  $U`
        [ -z "$user" ]&&{
                echo "$U 用户不存在!!"
                Show
        }||{
                echo "$U 存在,您进行以下操作:"
                read -p "[D]elete  [C]hangepasswd  [S]kip  [E]xit
                您想执行的操作是:"  ACTION
                [ "$ACTION" = "d" -o "$ACTION" = "D" ]&&{
                        userdel -r $U
                        echo "$U is already  delete!!"
                        Show
                }
                [ "$ACTION" = "c" -o "$ACTION" = "C" ]&&{
                        read -p  "请输入要修改的密码:" pswd
                        echo $pswd | passwd $U &> /dev/null
                        echo "password  is already changed!!"
                        Show
               }
               [ "$ACTION" = "s" -o "$ACTION" = "S" ]&&{
                        echo "Skip  it!!"
                        Show
               }
               [ "$ACTION" = "e" -o  "$ACTION" = "E" ]&&{
                        echo  "bye!!"
                        exit
               }
        }
}
TestUser $1
练习题二:根目录使用率超过40%,则会在屏幕上出现警示提示

1.脚本的编写

vim  alart.sh

#!/bin/bash
View()
{
        num=`df -H | awk '/\/$/{print $5}'|sed 's/%//g'`
        TTY=`ps | awk '/bash$/{print $2}'`
        [ "$num" -gt "40" ]&&{
                echo "Warning: your / is full!!"
                sleep 2
                View
        }||{
                sleep 2
                View
        }
}
View  &                   ##打入后台执行,查看的时候,可以使用PS
2.测试结果:dd if=/dev/zero  of=/mnt/bigfile bs=1M count=800   ##截取文件的大小            shell脚本实例二

3.删除自己截取的空间大小:rm -rf bigfile  (删除后,则不会在中端显示提示信息)

练习题三:检测可以ping通的主机,并把通的主机号写入/mnt/ip_up;不通的写入/mnt/ip_down

vim  host_test.sh

  shell脚本实例二

练习题四:倒计时
1、脚本编写:

  vim  countv.sh

  shell脚本实例二

2.测试结果:(显示的时候,下一行会覆盖上一行。可以使用man echo查看相关参数)

  shell脚本实例二

练习五:使用case命令,当输入cat的时候,输出dog;当输入dog的时候,输出cat;其他情况均输出error。

 vim  anima.sh

 shell脚本实例二

练习六:自动交互脚本

一、安装expect软件,用来实现交互。执行命令:expect answer.exp

1.脚本编写

  vim   answer.sh     ##第五行设置等待时间,超过则进行下一条信息的匹配;最后一行表示留在expect所在环境。

 shell脚本实例二
2.脚本测试结果:

  shell脚本实例二

 

二.使用.sh文件来执行;即把answer.exp中内容重定向到sh脚本中

 vim  answer.sh       ##使用输入重定向

 shell脚本实例二

练习七:自动连接IP,使用SSH服务
1.脚本编写

 vim  auto_conn.exp               ##要进入ip的主机,所以需要写interact

 shell脚本实例二

 

2.测试结果:
  shell脚本实例二

 

练习八:虚拟机的启动(在主机中进行脚本编写和测试)

vim   virt_test.sh

#!/bin/bash
case $1  in
        start)
        echo `rht-vmctl start server`
        ;;
        view)
        echo `rht-vmctl  view  server`
        ;;
        poweroff)
        echo `rht-vmctl  poweroff  server`
        ;;
        *)
        echo "no action!!"
esac