Shell 要求:写一个脚本
一、添加10个用户user1到user10,密码同用户名,,若用户存在,但要求只有用户不存在的情况下才能添加,格式为/useradd.sh
解答思路:1、使用for 循环语句添加用户 user1 到user 10
2、判断用户是否存在,若存在,则echo 用户已存在 ,若不存在,添加用户 ,并设置密码与用户名相同 。
脚本: vim useradd.sh 并赋予+x权限、
#!/bin/bash # for I in{1..10};do if id user$I >>/dev/null;then echo “user user$I Exits” else useradd user$I &> /dev/null echo "User user$I add sucefull" echo user$I | passwd --stdin user$I &>/dev/null echo "The user user$I passwd is user$I" fi done
二、删除户user1到user10,,若用户不存在,则echo 用户不存在,若用户存在 ,则删除。格式为/userdel.sh
思路: 1、判断用户是否存在 ,若存在,则删除 ;若不存在,则显示该用户不存在
2、使用for 循环语句
脚本: vim userdel.sh,并赋予+x权限
#!/bin/bash # for I in{1..10};do if id user$I >>/dev/null;then userdel -r user$I &> /dev/null echo "User user$I Del successful" else echo "user$I NOT exits." fi done
三、扩展以上脚本,若add则添加用户user1 到 user10 ,若del 则删除用户user1 到user10。格式如 : admin.sh --add |--del
思路: 1、若未输入任意参数,则输出格式错误并显示正确的输入格式,后exit
2、判断输入的参数是否为--add ,然后判断该用户名是否存在 ,若存在 ,则显示存在 ;若不存在 ,则添加user1 到user10 10个用户 ,并配置密码与用户名相同 。
3、判断输入的参数是否为--del ,然后判断该用户名是否存在 ,若存在 ,则删除操作 ,并echo 显示删除成功 ;若不存在 ,则显示该用户不存在。
4、判断输入的参数为其他 ,则显示命令错误
脚本:admin.sh ,并赋予+x权限
#!/bin/bash # if [ $# -lt 1 ];then #未输入参数 echo "Usage : useradd.sh [opention]" exit 7 fi if [ $1 == ‘--add‘ ];then #输入的第一个参数为 for I in {1..10};do if id user$I &>/dev/null ;then echo "user user$I Exit" else useradd user$I echo user$I |passwd --stdin user$I &>/dev/null echo "user user$I add successfull" fi done elif [ $1 == ‘--del‘ ];then for I in {1..10};do if id user$I &>/dev/null ;then userdel -r user$I &>/dev/null echo "userdel user$I successful" else echo "user user$I not Exit" fi done else echo "Exit" exit 10 fi
三、再次扩展以上脚本,通过输入的参数,来实现用户的添加与删除 。格式如: admin2.sh --add|--del|--help wli,jerry,tom,hello,hi
思路: 1、把输入的第二个参数转换成列表方式 。
2、若第一个参数为--help ,则显示帮助命令
3、其他思路依照上个示例
脚本 admin2.sh ,并赋予+x权限
#!/bin/bash # if [ $# -lt 1 ];then echo "Usage:adminuser.sh --add|--del|--help [opentions]" exit 7 fi if [ $1 == ‘--add‘ ];then for USER in `echo $2|sed ‘s/,/ /g‘`;do if id $USER &>/dev/null;then echo "$USER exit" else useradd $USER &>/dev/null echo $USER |passwd --stdin $USER &>/dev/null echo "Add $USER finished." fi done elif [ $1 == ‘--del‘ ];then for USER in `echo $2|sed ‘s/,/ /g‘`;do if id $USER &>/dev/null;then userdel -r $USER &>/dev/null echo "Del $USER finished" else echo "$USER NOT exit" fi done elif [ $1 == ‘--help‘ ];then echo "Usage :a.sh --add USER1,USER2,…|--del USER1,USER2,…|--help" else echo "UNKnown ATGIN" fi
命令格式:
1、判断语句格式 :
单if分支格式:
if判断条件;then
fi
双分支结构:
if 判断条件;then
else
fi
多分支结构:
if 判断条件;then
elif ; then
elif ; then
else
fi
2、循环语句格式
for 变量 in 列表 :do
循环体
done
遍历 完成后,退出
生成列表:echo $2 |sed ‘s/,/ /g‘
整数列表:
{1..100} 1到100的整数
seq [起始数 [步进长度]] 结束数
3、添加/删除用户格式
# useradd 创建用户
-u
UID
-g GID(基本组)
-G
GID.... (附加组)
-c
“COMMENT” 注释信息
-d
指定家目录
-s 指定shell 路径 /etc/shells :指定了当前系统中可用的安全shell
-m -k
强制为用户创建家目录 ,并把shell 文件进行拷贝到家目录
-M
/etc/login.defs ,不为用户创建家目录
-r
添加系统用户
#userdel 删除用户
若不加任何选项,默认不删除用户的家目录
-r
删除 用户同时 ,删除家目录
4、passwd 使用格式
#passwd [USERNAME]
修改用户密码
--stdin
示例: echo
"redhat" | passwd --stdin user3
-l lock
-u
unlock
-d 删除用户密码
———————————————————— 多积累、多总结、多练习