Linux 脚本之用户创建

脚本要求:

1. 编写一个脚本createuser.sh,脚本的执行语法必须是:createuser.sh -u username -m password,选项与参数间可支持多空格,但不能顺序颠倒。当未指定正确的选项或参数时,以错误输出方式提示“createuser.sh -u username -m password ”后退出脚本。
   2. 用户名必须以字母开头,可包括数字和_。否则不合法。以错误输出提示用户"用户名仅包含字母数据和下划线"当用户名检测合法后。

3. 判断用户名是否已存在,若存在,再判断用户是否已设置过密码,若设置过密码,直接退出,未设置,则将密码设置为所指定的密码后以正确输出方式显示“username 密码已更新后退出”

4. 当用户名不存在,则创建用户,并为该用户设置所指定的密码后以正确输出方式显示“用户username已创建并更新密码”

5. 要求脚本执行过程中不能有非要求的其他输出结果出现。脚本在非正确方式退出时应反回给?参数非0值。

解决步骤:

思想:

看起来问题挺复杂的,无从下手。而我们要把问题分为若干个小的问题去解决,我就简单的把这个脚本分为了以上五个小的模块,然后一个一个去解决它。

  • 第一个模块

要求:编写一个脚本createuser.sh,脚本的执行语法必须是:createuser.sh -u username -m password,选项与参数间可支持多空格,但不能顺序颠倒。当未指定正确的选项或参数时,以错误输出方式提示“createuser.sh -u username -m password ”后退出脚本

#判断是否满足有四个参数

if [ $# -ne 4 ];then

#提示用户输入错误

echo "createuser.sh -u username -m password"

#不满足退出

exit
#第一个参数是否是 -u
elif [ $1 != "-u" ];then
echo "createuser.sh -u username -m password"
exit

#第三个参数是否是 -m
elif [ $3 != "-m" ];then
echo "createuser.sh -u username -m password"
exit
fi

  • 第二个模块

要求:用户名必须以字母开头,可包括数字和_。否则不合法。以错误输出提示用户"用户名仅包含字母数据和下划线"当用户名检测合法后。

echo $2|egrep -i "^[a-z]+([a-z]*|[_]*|[0-9]*){100}$

就这一句就满足了以上要求不过没有提示用户

^[a-z]+ 用户名字母开头

([a-z]*|[_]*|[0-9]*){100}$  后边可以为字母 或 下划线 或 数字把他们三个弄成一个整体用{100}表示重复100次直到用户名结尾(只重复了100次,我想也不会有人把用户名设置成100位一上)

  • 第三个模块

要求:判断用户名是否已存在,若存在,再判断用户是否已设置过密码,若设置过密码,直接退出,未设置,则将密码设置为所指定的密码后以正确输出方式显示“username 密码已更新后退出”

(cat /etc/passwd |cut -d : -f 1|egrep ^$2$ &&
cat /etc/gshadow|grep ^$2:|cut -d : -f2|grep !  &&

echo "$4" | passwd --stdin $2) &>/dev/null && echo $2 " 密码已更新" &&
exit

# &>/dev/null 是把前边命令执行成功或者失败的提示丢掉不显示

# echo "$4" | passwd --stdin $2 把$4第四个参数(passwd)做为密码传递给$2第二个参数(username)

  • 第四个模块

要求:当用户名不存在,则创建用户,并为该用户设置所指定的密码后以正确输出方式显示“用户username已创建并更新密码”

(echo $2|egrep -i "^[a-z]+([a-z]*|[_]*|[0-9]*){100}$" &&
useradd $2 &&

echo "$4" | passwd --stdin $2) &>/dev/null &&
echo  $2  "已创建并更新密码"||echo "用户名仅包含字母数据和下划线" &&
exit

第四个模块是建立在里一个模块上完成的

  • 第五个模块

要求:要求脚本执行过程中不能有非要求的其他输出结果出现。脚本在非正确方式退出时应反回给?参数非0值。

第五个模块就是对上四个模块的一个完善和补充

&>/dev/null 是满足没有其他的输出结果

exit [ ] 是退出返回的错误参数

  • 综合

截图:

代码:

#!/bin/bash
# Filename createuser53.sh
# Revision: 1.1
# Date: 2017/8/5
# Author: xin
# ------------------------------------------
#参数是否满足四个
if [ $# -ne 4 ];then
echo "createuser.sh -u username -m password"
exit 1
#第一个参数是否是 -u
elif [ $1 != "-u" ];then
echo "createuser.sh -u username -m password"
exit 2
#第三个参数是否是 -m
elif [ $3 != "-m" ];then
echo "createuser.sh -u username -m password"
exit 2
fi
#判断用户是否存在,若存在是否设置过密码
(cat /etc/passwd |cut -d : -f 1|egrep ^$2$ &&
cat /etc/gshadow|grep ^$2:|cut -d : -f2|grep !  &&
echo "$4" | passwd --stdin $2) &>/dev/null && echo $2 " 密码已更新" &&
exit 4
   #用户不存在满足条件创建用户并设置密码
   (echo $2|egrep -i "^[a-z]+([a-z]*|[_]*|[0-9]*){100}$" &&
   useradd $2 &&

echo "$4" | passwd --stdin $2) &>/dev/null &&
   echo  $2  "已创建并更新密码"||echo "用户名仅包含字母数据和下划线" &&
   exit 5

创建了一个名为 ceshi 密码为:123的用户测试成功

时间: 2024-10-22 13:06:46

Linux 脚本之用户创建的相关文章

Linux FTP虚拟用户创建

(1)cd /etc/vsftpd/(2)vim vuser.list创建用户zhaosi和liwu 密码均为redhat(奇数行为帐户名,偶数行为密码)(3)db_load -T -t hash -f vuser.list vuser.db(4)file vuser.db(5)chmod 600 vuser.db(6)rm -f vuser.list(7)设置/var/ftproot/为本地用户家目录(8)chmod -Rf 755 /var/ftproot/赋予家目录权限(9)vim /et

在Linux下给mysql创建用户并分配权限等问题

在linux系统中安装mysql的步骤 工具: mysql-5.6.17-linux-glibc2.5-i686.tar.gz mysql-5.6.17-linux-glibc2.5-x86_64.tar.gz linux系统64位 方法/步骤 1.到mysql官网下载mysql编译好的二进制安装包. 2.解压安装包: 3.进入安装包所在目录,执行命令:tar -zxvf  mysql-5.6.17-linux-glibc2.5-i686.tar.gz 4.复制解压后的mysql目录到系统的本地

Linux学习笔记(十二)--命令学习(用户创建、删除等)

通过上面的几章学习,我们对linux有了一些了解,现在我们再继续进行下去.... 我们习惯的windows 界面系统中,只要在界面里去下鼠标,填写等这些就可以完成了一个用户创建.删除.添加所属组等,那我们在linux里又是怎么操作的呢??? 下面在学习如何使用命令进行一系列的操作时,我们要先了解一些别的: 在linux系统里除了我们要新建的用户外,还有一些特定的用户,我们称呼它为:伪用户. -----------------------------------------------------

linux下删除用户脚本----不是userdel -r 那么简单

linux下删除用户不仅仅是userdel -r 那么简单. 如果你删除用户时,该用户有许多进程正在进行,你是不是要一个个kill掉再删除: 如果你成功删除该用户后,系统中还有需要改用户的文件是不是还要删除. 如上,岂不麻烦.下面的脚本可以帮你快速删除一个或多个用户. #!/bin/bash #delete user from system #by slitobo 2017/6/2 #check user is root [ `id -u` -ne 0 ] && echo "Pl

linux用户创建删除以及文件权限查看修改

一. 1.查看用户 命令如下:whoami 2.创建用户 创建用户命令:sudo adduser hello 超级用户是 root 删除用户名命令:sudo deluser hello --remove-home 切换用户登录命令: su -l hello 3.用户组 groups 查看用户组命令:cat  /etc/group 或者:cat  /etc/group | sort    (这样显示出来的数据是按照字典顺序排列的) 创建用户组:usermod 二.linux文件的权限 1.权限查看

linux 用户创建、管理、权限分配

(1)su与sudo su:通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证: sudo: sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限.同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它. # 1. sudo能够限制指定用户在指定主机上运行某些命令.# 2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机

在Linux下给mysql创建用户并分配权限及问题解决方案

在linux下安装mysql请参考在linux系统中安装mysql服务器详细步骤 1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’)); //刷新系统权限表 mysql>flush privileges; 这样就创建了一个名为:jeecn  密码为:j

Linux下给mysql创建用户分配权限

1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’)); //刷新系统权限表 mysql>flush privileges; 这样就创建了一个名为:jeecn  密码为:jeecn  的用户. //退出后登录一下 mysql>exit; @>

linux目录和用户的权限

目录和用户的权限 一.Linux系统中文件权限 1.1 Linux系统中三种基本权限 ·文件权限的定义:对某个文件或目录的访问控制(访问限制) ·文件的三个属性: l 用户的所有者(属主):当用户创建一个文件,默认这个用户就是这个文件的属主 l 用户的群组所有者(属组):用户的主要组就是这个文件的属组 l 其他人:不是以上两者 例如: # ll total 0 -rw-r--r-- 1 root root 0 Jul  8 18:28 text.txt 其中第三列和第四列是用户的属主和属组 ·三