shell中的脚本程序(二)

1.创建一个脚本,当用户存在的时候,会输出用户已经存在,当用户不存在的时候,创建此用户

<1>新建一个脚本写入内容并显示:

[root@desktop mnt]# vim test.sh
[root@desktop mnt]# cat test.sh

在这里插入图片描述
脚本中的内容如下:

#!/bin/bash
        for i in "$@"
do
        id $i &>/dev/null && {
        echo "$i is exist"
        }||
        {
                useradd $i &>/dev/null
                echo $i is created
        }
done

在这里插入图片描述
<2>测试:

[root@desktop mnt]# sh test.sh wo	##当输入一个不存在的用户时,会新建此用户
[root@desktop mnt]# sh test.sh wo	##当输入一个已经存在的用户时,会输出用户已经存在

在这里插入图片描述

2.创建一个脚本,会有三个选项,C表示创建用户,当当用户存在的时候,会输出用户已经存在,当用户不存在的时候,创建此用户,D表示删除用户,E表示退出

<1>新建一个脚本写入内容并显示:

[root@desktop mnt]# vim file2.sh
[root@desktop mnt]# cat file2.sh

在这里插入图片描述
脚本中的内容如下:

#!/bin/bash
Input_Cmd()	##关于选项的函数
{
read -p "Action: " Input_Action
ACTION=`echo $Input_Action | tr 'A-Z' 'a-z'`	##将输入的转换成小写
[ "$ACTION" != "c" -a "$ACTION" != "d" -a "$ACTION" != "e" ] && {
        echo Input wrong action!!
        Input_Cmd	##当没有输入任何内容时,再次返回选项的函数
}
}
echo " Please input action
        [C]reate [D]elete [E]xit"
        Input_Cmd	##主要执行的顺序

Input_name(){	##关于创建用户的函数

        read -p "Please input username:" USERNAME
        id $USERNAME &>/dev/null && {
                echo "$USERNAME is exist!!"
                Input_name	##如果用户已经存在,让其继续输入,故返回创建用户的函数
}
}
[ "$ACTION" = "c" ] &&  {
        Input_name
       }||{
                read -p "Please input password:" -s PASSWORD
                useradd $USERNAME
                echo $PASSWORD | passwd --stdin $USERNAME &> /dev/null && {
                        echo $USERNAME is ceated
                        Input_Cmd
                }
        }

[ "$ACTION" = "d" ] && {	##如果输入的是d,则删除用户
        read -p "Please input want to delete username: " DELUSER
        id $DELUSER &>/dev/null && {
                userdel -rf $DELUSER
                echo "$DELUSER is deleted"
                }||{
                        echo "$DELUSER is not exist!!"
                        }
                }
[ "$ACTION" = "e" ]&& {
        exit
}

<2>测试(侧重于建立):

[root@desktop mnt]# sh file2.sh
 Please input action
        [C]reate [D]elete [E]xit
Action: C	##输入想要选择的选项
Please input username:wo	##输入一个已经存在的用户
Please input username:oo	##输入一个不存在的用户
Please input password:oo is ceated	##输入密码
Action: D	##再次输入选项
Please input want to delete username: oo	##删除一个已经存在的用户

在这里插入图片描述
<3>测试(侧重于删除):
[root@desktop mnt]# sh file2.sh

 Please input action
        [C]reate [D]elete [E]xit
Action: C
Please input username:wo
Please input username:oo
Please input password:
Action: Input wrong action!!	##如果什么都不输入,会出现报错
Action: D
Please input want to delete username: ss	##如果输入一个不存在的用户,会报错

在这里插入图片描述
解释:此脚本中还有许多bug未解决(如只能一次性),希望谅解,最好使用case命令

3.如果根的负载率大于等于80%时,会出现报错

<1>编写脚本

[root@desktop mnt]# vim warning.sh

在这里插入图片描述
warning.sh中的内容如下:

#!/bin/bash
Disk_Used=$(df -h / | grep / | awk -F " " '{print $5}' | cut -d % -f 1)
ECHO_DEV=`ps | grep $$ | awk -F " " '{print $2}'`
[ "$Disk_Used" -ge "80" ] && {
        echo Waring : System root will full ,please fix this waring !! > /dev/$ECHO_DEV
}
echo " * * * * *  root /mnt/warning.sh" > /etc/cron.d/warning

在这里插入图片描述
<2>增加“/”的负载大于80%

[root@desktop mnt]# df -H
[root@desktop mnt]# dd if=/dev/zero of=/mnt/bigfile1 bs=1M count=1000
[root@desktop mnt]# df -h
[root@desktop mnt]# dd if=/dev/zero of=/mnt/bigfile2 bs=1M count=4000
[root@desktop mnt]# df -H

在这里插入图片描述
<3>对脚本进行测试,当"/"的负载大于等于80%时,会出现报错

[root@desktop mnt]# vim warning.sh
[root@desktop mnt]# chmod +x /mnt/warning.sh
[root@desktop mnt]# /mnt/warning.sh

在这里插入图片描述

分析:
-1-

[root@desktop mnt]# df -h /	##显示“/”的挂载
[root@desktop mnt]# df -h / | grep /	##将“/”用红色字号标记出来
[root@desktop mnt]# df -h / | grep / | awk -F " " '{print $5}'	##显示前面条件那一行中的第五个值
[root@desktop mnt]# df -h / | grep / | awk -F " " '{print $5}' | cut -d % -f 1	##删除第五个值后面的“%”号,只显示数字就行

在这里插入图片描述
-2-

[root@desktop mnt]# ps	##显示进程
[root@desktop mnt]# ps | grep $$	##"$$"指shell本身的PID,输出shell那行的内容
[root@desktop mnt]# ps | grep $$ | awk -F " " '{print $2}'	##输出shell那行中第二列的信息

在这里插入图片描述
-3-
脚本中内容
warning中的文件也可以这样写

#!/bin/bash
Disk_Used=$(df -h / | grep / | awk -F " " '{print $5}' | cut -d % -f 1)
[ "$Disk_Used" -ge "80" ] && {
        echo Waring : System root will full ,please fix this waring !! >> /var/log/messages
}
echo " * * * * *  root /mnt/warning.sh" > /etc/cron.d/warning

在这里插入图片描述
测试:

[root@desktop mnt]# vim warning.sh
[root@desktop mnt]# > /var/log/messages	##清空日志
[root@desktop mnt]# cat /var/log/messages	##通过查看日志文件可以查看到脚本在判断“/”的负载率时,一直在输出大于时的内容

在这里插入图片描述
-4-
实验完成后记得还原原来的设置,避免对之后的实验有影响

[root@desktop mnt]# rm -rf *
[root@desktop mnt]# rm -rf bigfile1
[root@desktop mnt]# rm -rf bigfile2
[root@desktop mnt]# df -h

在这里插入图片描述

4.尝试查看你的主机ip是否可以连接别的ip,如果可以连接,输出别的ip is up,如果无法连接,输出别的ip is down,如果没有输任何内容,输出please input you want to check ip after commond

<1>编写脚本文件

[root@desktop mnt]# vim ping.sh

在这里插入图片描述
脚本内容如下:

#!/bin/bash
[ -n "$1" ] &&{
        ping -c1 -w1 $1 &>/dev/null && echo $1 is up || echo $1 is down
}||{
        echo "please input you want to check ip after commond"
}

在这里插入图片描述
<2>测试:

[root@desktop mnt]# sh ping.sh 
[root@desktop mnt]# sh ping.sh 172.25.254.66
[root@desktop mnt]# sh ping.sh 172.25.254.336

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/88752271