1.添加6个用户,每个用户的密码同用户名,不显示添加密码的信息,并给显示添加用户成功信息。
①用户直接在脚本里写死 test1.sh
#!/bin/bash#脚本的第一行一定是这个脚本的声明,这里声明的是脚本的解释器。 # 用户可以有参数传过来,也可以直接定义一个变量。 U=’user1’ #声明变量,本地变量的声明直接变量名=值,无需export。这里选择单引号,因为user1是个字 符串,只需强引就行,双引号也行。 useradd $U #引用变量 #设置密码和用户名相同,但是设置完之后不显示passwd的执行结果。但是这个passwd会在控制台出现信息 ,所以需要使用管道传入数据,并且重定向。 echo "$U" | passwd --stdin $U &>/dev/null #前一个命令的输出传给后一个命令的输入。 echo "success." #打印成功信息。
②用户当参数传递 test2.sh
#!/bin/bash # useradd $1 #这里是使用传递参数的方式,1代表1个参数,实际上$1是特殊变量$*的特例 echo "$1" | passwd --stdin $1 &>/dev/null echo "Add user $1 success."
③执行
脚本1的执行: sh test1.sh 脚本2的执行: sh test2.sh username 查看是否添加成功: cat /etc/passwd
调试脚本执行: sh -x /opt/shell/test2.sh
2.写一个脚本,完成以下任务:第一,使用一个变量保存一个用户名;第二,删除此变量中的用户,且一并删除其家目录;第三,显示“用户删除成功”信息。
①编写脚本test3.sh
#!/bin/bash U=$* #使用一个变量存储用户名 userdel $U #删除这个用户 rm -rf /home/$U #删除该用户的家目录 echo "delete user and ${U}home success." #打印成功信息
②执行脚本
sh test3.sh username #注意一定要有参数(要删除的用户),不然会删除整个/home目录 cat /etc/passwd #查看用户是否删除成功。 ls /home #查看用户的家目录是否删除成功
3.添加用户前先判断是否存在,如果存在就打印该用户已存在,并且退出。
①编写脚本test4.sh
#!/bin/bash id $1 &>/dev/null && echo "User $1 exist" && exit 3 #使用命令的执行状态作为逻辑判断。id $1 如果用户$1存在,则为0(真),#需要继续判断后面的,所以执行echo,并且退出脚本,不再 #创建该用户。退出,3是非0,当前脚本执行不成功。 useradd $1 #添加用户 id $1 &>/dev/null && echo "$1" | passwd --stdin $1 &>/dev/null #如果用户创建成功了,就执行后面的echo passwd添加密码。 echo "Add user $1 success."
②执行脚本
sh test4.sh user1