1.建立用户
执行user_create.sh userfile passwdfile
要求:
创建userfile中的用户
设定userfile用户的密码为passwdfile中的密码
当脚本后面的文件数不足两个时报错
当两个文件行数不一致时报错
当文件不存在时报错
当用户存在时报错
当不是超级用户执行此脚本时报错
2.备份数据库
执行db_dump.sh westos 备份westos数据库
要求:
脚本执行后备份数据库的所有库到/mnt/mysqldump目录中
备份文件名称为“库名称.sql” 当此文件存在时报错,并且询问动作
S跳过备份;B备份“库名称.sql”文件为“库名称_backup.sql” ;O覆盖原文件
数据库中的数据:
运行结果:数据成功备份
3.倒计时1分钟2秒
4.自动应答
expect是自动应答命令用于交互式命令的自动执行
spawn是expect中的监控程序,其运行后悔监控命令提出的交互问题
send 发送问题的答案给交互命令
“\r” 表示回车
exp_continue 表示当阿问题不存在时继续回答下面的问题
expect eof 表示问题回答完毕后退出expect环境
interact 表示问题回答完毕后留在交互界面
set NAME [lindex $argv n ] 定义变量
(1)问题的脚本
(2)应答的脚本
运行结果:问题中的'job'那行被注释了,所以问题不显示
5.列出172.25.254.75~172.25.254.78之间的能登陆用户的用户名称
运行结果:
因为之前已经把脚本的路径添加进系统配置文件/etc/profile中,这里直接调用脚本名称即可运行
可见只有172.25.254.78这台主机开机,获取到了能登陆的用户名
首先检测能不能ping通,之后ssh远程连接(采用expect交互式自动应答),执行命令后退出交互环境
6.case语句
根据用户输入的命令,执行对用户的操作
del(删除用户)
add(添加用户)
运行结果:
add(添加用户)
del(删除用户)
7.采用自动应答expect远程建立userfile文件中的用户,以及设置passwdfile文件中对应的密码
用户存在报错
expect自动应答配合crontab定时执行交互命令,解放人力,更加方便
运行结果:
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 ##不回显,比如密码的设定,一般都不会显示在屏幕上