文章目录
10.1 写一个用户管理脚本
- 脚本格式: ./script_file[ -h | -a | -d | -p PASSWORD | -m | -s SHELL ] USER_LIST_FILE
- -a 创建用户列表文件中的用户此选项必须接-m或-p连用
- -d 删除用户列表文件中的用户
- -p PASSWDORD 设置用户统一的密码
- -m 使用默认密码rehat
- -s SHELL 指定用户的默认shell,如不指定默认/bin/bash
- -h 显示帮助信息
- /root/userlist文件内容:每行一个用户名
- 注意事项:
- 脚本参数无序也能执行
- 脚本根据不同情况返回不同的状态码
- 参数错误能报错
- 短选项要支持连写
- 不显示多余的输出信息
- 用户已存在需提示
10.1.1 编写脚本
#!/bin/bash
user=alice
pflag=0
flag_pass=rehat
shell=/bin/bash
opt=`getopt -q hadms:p: $* | sed "s/'//g"`
set -- $opt
while :; do
case $1 in
-h)
echo -e " Usage: ./script_file[ -h | -a | -d | -p PASSWORD | -m | -s SHELL ] USER_LIST_FILE"
echo -e " 描述:此脚本用于管理用户"
echo -e "\t-a \t\t 创建用户列表文件中的用户此选项必须接-m或-p连用"
echo -e "\t-d \t\t 删除用户列表文件中的用户"
echo -e "\t-p PASSWORD\t 设置用户统一的密码"
echo -e "\t-m \t\t 使用默认密码rehat "
echo -e "\t-s SHELL\t 指定用户的默认shell,如不指定默认/bin/bash"
echo -e "\t-h \t\t 显示帮助信息"
exit 0
;;
-a)
flag="add"
shift
;;
-d)
flag="del"
shift
;;
-p)
pflag=1
flag_pass=$2
shift 2
;;
-m)
pflag=1
shift
;;
-s)
shell=$2
shift 2
;;
--)
shift
break
;;
*)
echo "语法错误,使用 -h 获取帮助!!!"
exit 1
;;
esac
done
if [ $# -ne 0 ]; then
case $flag in
add)
file=$1
while read line;do
let n++
user=$line
id $user &> /dev/null
if [ $? -eq 0 ];then
echo "用户 $user 已经存在!!!"
else
useradd -s $shell $user
echo "$flag_pass" | passwd --stdin $user >/dev/null 2>&1
echo "用户 $user 添加成功!!!"
fi
done < $file
exit 0
;;
del)
file=$1
while read line;do
let n++
user=$line
id $user &> /dev/null
if [ $? -eq 0 ];then
userdel -r $user
echo "用户 $user 删除成功!!!"
else
echo "用户 $user 不存在!!!"
fi
done < $file
;;
esac
else
echo "语法错误,使用 -h 获取帮助!!!!!!"
exit 1
fi
case $pflag in
1)
awk -F:'{print $1,$3}' /etc/passwd
esac
10.1.2 给执行权限
[root@localhost tmp]#chmod +x script_file
10.1.3 创建/root/userlist文件,并写入内容
[root@localhost tmp]#touch /root/userlist
[root@localhost tmp]#cat /root/userlist
test1
test2
test3
10.1.4 测试 -h/-a/-m/-p
[root@localhost tmp]#./script_file
语法错误,使用 -h 获取帮助!!!!!!
[root@localhost tmp]#./script_file -h
Usage: ./script_file[ -h | -a | -d | -p PASSWORD | -m | -s SHELL ] USER_LIST_FILE
描述:此脚本用于管理用户
-a 创建用户列表文件中的用户此选项必须接-m或-p连用
-d 删除用户列表文件中的用户
-p PASSWORD 设置用户统一的密码
-m 使用默认密码rehat
-s SHELL 指定用户的默认shell,如不指定默认/bin/bash
-h 显示帮助信息
[root@localhost tmp]#./script_file -a
语法错误,使用 -h 获取帮助!!!!!!
[root@localhost tmp]#./script_file -a -m
语法错误,使用 -h 获取帮助!!!!!!
[root@localhost tmp]#./script_file -a -m /root/userlist
用户 test1 添加成功!!!
用户 test2 添加成功!!!
用户 test3 添加成功!!!
[root@localhost tmp]#./script_file -a -p 123 /root/userlist
用户 test1 已经存在!!!
用户 test2 已经存在!!!
用户 test3 已经存在!!!
去/etc/passwd文件下查看
[root@localhost tmp]#grep -E '^test[0-9]{1}\>' /etc/passwd
test1:x:1016:1017::/home/test1:/bin/bash
test2:x:1017:1018::/home/test2:/bin/bash
test3:x:1018:1019::/home/test3:/bin/bash
10.1.5 测试-d
[root@localhost tmp]#./script_file -d /root/userlist
用户 test1 删除成功!!!
用户 test2 删除成功!!!
用户 test3 删除成功!!!
[root@localhost tmp]#./script_file -d /root/userlist
用户 test1 不存在!!!
用户 test2 不存在!!!
用户 test3 不存在!!!
10.1.6 测试-s
[root@localhost tmp]#./script_file -d /root/userlist
用户 test1 删除成功!!!
用户 test2 删除成功!!!
用户 test3 删除成功!!!
[root@localhost tmp]#./script_file -a -p 123 -s /sbin/nologin /root/userlist
用户 test1 添加成功!!!
用户 test2 添加成功!!!
用户 test3 添加成功!!!
[root@localhost tmp]#grep -E '^test[0-9]{1}\>' /etc/passwd
test1:x:1016:1017::/home/test1:/sbin/nologin
test2:x:1017:1018::/home/test2:/sbin/nologin
test3:x:1018:1019::/home/test3:/sbin/nologin
10.1.7 测试乱序以及多余参数
[root@localhost tmp]#./script_file -aa -aa -d /root/userlist
用户 test1 删除成功!!!
用户 test2 删除成功!!!
用户 test3 删除成功!!!
[root@localhost tmp]#./script_file -p 123 -a /root/userlist
用户 test1 添加成功!!!
用户 test2 添加成功!!!
用户 test3 添加成功!!!
[root@localhost tmp]#./script_file -q -w -e -r
语法错误,使用 -h 获取帮助!!!!!!
[root@localhost tmp]#./script_file -q -w -e -r -d /root/userlist
用户 test1 删除成功!!!
用户 test2 删除成功!!!
用户 test3 删除成功!!!
[root@localhost tmp]#./script_file -s /sbin/nologin -p 123 -a /root/userlist
用户 test1 添加成功!!!
用户 test2 添加成功!!!
用户 test3 添加成功!!!
[root@localhost tmp]#grep -E '^test[0-9]{1}\>' /etc/passwd
test1:x:1016:1017::/home/test1:/sbin/nologin
test2:x:1017:1018::/home/test2:/sbin/nologin
test3:x:1018:1019::/home/test3:/sbin/nologin
10.2 编写expect脚本:模拟登陆到ftp服务器并下载文件fstab(预先搭建ftp服务器并拷贝文件到/var/ftp目录)
10.2.1 安装vsftpd/ftp
yum -y install vsftpd
yum -y install ftp
10.2.2 开启服务
systemctl restart vsftpd
10.2.3 拷贝共享文件
cp /etc/fstab /var/ftp/
10.2.4 关闭防火墙
iptables -F
10.2.5 编写脚本
#!/usr/bin/expect
set user "ftp"
set ip "127.0.0.1"
spawn ftp $ip
expect "Name (127.0.0.1:root): "
send "$user\r"
expect "Password:"
send "\r"
expect ">"
send "get fstab\r"
expect "ftp> "
send "exit\r"
expect eof
10.2.6 测试
[root@localhost tmp]#./33.exp