1.建立用户

执行user_create.sh userfile passwdfile

要求:

创建userfile中的用户

设定userfile用户的密码为passwdfile中的密码

当脚本后面的文件数不足两个时报错

当两个文件行数不一致时报错

当文件不存在时报错

当用户存在时报错

当不是超级用户执行此脚本时报错

shell的脚本练习

shell的脚本练习


2.备份数据库

执行db_dump.sh westos 备份westos数据库

要求:

脚本执行后备份数据库的所有库到/mnt/mysqldump目录中

备份文件名称为“库名称.sql”  当此文件存在时报错,并且询问动作

S跳过备份;B备份“库名称.sql”文件为“库名称_backup.sql” ;O覆盖原文件

shell的脚本练习


shell的脚本练习

数据库中的数据:
shell的脚本练习

运行结果:数据成功备份

shell的脚本练习

3.倒计时1分钟2秒

shell的脚本练习

shell的脚本练习

4.自动应答

expect是自动应答命令用于交互式命令的自动执行

spawn是expect中的监控程序,其运行后悔监控命令提出的交互问题

send  发送问题的答案给交互命令

“\r”  表示回车

exp_continue  表示当阿问题不存在时继续回答下面的问题

expect eof  表示问题回答完毕后退出expect环境

interact  表示问题回答完毕后留在交互界面

set NAME [lindex $argv n ]   定义变量

(1)问题的脚本

shell的脚本练习

(2)应答的脚本

shell的脚本练习

运行结果:问题中的'job'那行被注释了,所以问题不显示

shell的脚本练习

5.列出172.25.254.75~172.25.254.78之间的能登陆用户的用户名称

shell的脚本练习

运行结果:

因为之前已经把脚本的路径添加进系统配置文件/etc/profile中,这里直接调用脚本名称即可运行

可见只有172.25.254.78这台主机开机,获取到了能登陆的用户名

首先检测能不能ping通,之后ssh远程连接(采用expect交互式自动应答),执行命令后退出交互环境

shell的脚本练习

6.case语句

根据用户输入的命令,执行对用户的操作

del(删除用户)

add(添加用户)

shell的脚本练习

运行结果:

add(添加用户)

shell的脚本练习

del(删除用户)

shell的脚本练习

7.采用自动应答expect远程建立userfile文件中的用户,以及设置passwdfile文件中对应的密码

用户存在报错

expect自动应答配合crontab定时执行交互命令,解放人力,更加方便

shell的脚本练习

shell的脚本练习

运行结果:
shell的脚本练习

8.shell常用的语句

(1)for语句

for do done

(2)if语句

if

then

elif

then

fi

(3)while语句

while true

do

done

(4)case语句

case

esac

(5)负载的监控脚本

#!/bin/bash

while true

do

bash=` ps |awk 'NR==2{print $2}'`

echo -n `uptime` > /dev/$bash

echo -ne "\r    \r"

sleep 2

(7)函数

shell调用函数调用函数名称即可

vim create_user.sh     ###此脚本是对用户的创建

:

#!/bin/bash

Action()

{

        read -p "please input username:"  USERNAME

[ "$USERNAME" = "quit" ] && exit 0

        useradd $USERNAME

        read -p "please input passwd:" -s PASSWD

        echo " "

        echo $PASSWD | passwd --stdin $USERNAME

        Action                 ###一直执行Action()这个函数直到输入quit,退出函数

}

Action

9.退出值

每种退出值都有特定的含义,根据退出值有时也可以看出错误的点

exit

0     ###表示成功

0  ###表示失败

2      ###表示用法不当

127  ###表示命令没有找到

126  ###表示不是可执行的

echo $?   ###查看命令的退出值

10.read实现变量的传递

-p     ##显示提示符

-s     ##不回显,比如密码的设定,一般都不会显示在屏幕上

相关文章: