1.4.6 linux和高并发-shell编程-添加用户脚本

目录

1.写在前面

2.需求分析

3.bash命令行流程熟悉

4.添加用户脚本


1.写在前面

        我们在之前的学习过程中,已经重点讲解了关于脚本的基本知识,包括脚本的变量,引用和逻辑判断以及表达式的概念。我们现在就开始正式的进行脚本的写作。

2.需求分析

        我们首先做一个需求分析:一共有5个需求

3.bash命令行流程熟悉

        首先我们可以通过useradd命令添加用户sxt04,之后我们利用passwd命令设置其用户密码

        刚才我们在执行bash命令的时候,每一个命令都会有很多的反馈信息,比如上面的密码设置成功这种提示信息,我们第三个需求是要求静默运行脚本,不想看到那些提示信息。避免捕获用户接口是说我们刚才在输入命令的时候是一种交互式输入的形式,你给我提示,我给你值,避免的意思就是说我们要在程序运行期间,避免用户的操作。我们可以通过help passwd命令查看解决方法:

        我们可以看到这个--stdin,从利用管道  |,标准输入中读取密码。我们可以使用这种方式进行更新密码:

        程序自定义输出,比如说,我们可以做这个输出操作,当我们的用户添加成功之后,我们可以打印 一行信息:用户添加成功。

4.添加用户脚本

        这样一个满足需求的用户添加脚本就写完了,但是还有一些问题,比如没有静默运行,还是有一些提示信息,然后我们还要假设当用户没有输入密码的时候,我们应该怎么办??我们只需要把提示输出信息重定向到其他位置即可(到dev/null可以理解为一个黑洞,可以吸收任何东西而没有任何输出)。

        我们可以看到上面那两句提示信息已经没有出现了。那么还剩下最后一个问题,参数个数问题,我们只需要一个参数,当没有参数输入和多个参数输入的时候,我们应该做一些判断,不然会报错误信息。 我们可以获取参数并且判断:

   

        但是当我们正确输一个参数的时候,没有输出正确信息,我们可以分析我们的逻辑出现了问题,修正如下:

        到这个地方,我们的参数问题解决了,但是大家再想一下,是否有其他的问题:假如我们要添加这个用户,它已经存在了怎么办?很明显,我们并没有做一些判断,在我们的脚本程序中是怎么反应的呢?

        提示信息是用户已经存在,但是下面依旧输出了用户添加成功,这显然是不合理的一种方式。我们已经知道id 用户名,可以打印这个用户信息gid。

        我们上面解决了,当用户已经存在的时候,我们进行判断输出信息的过程,我们可以想一下是否还有其他问题呢?关于权限管理的事情,我们是不是应该检查一下是否是root用户,一般情况下,只有root用户可以进行创建用户,普通用户是没有这些权限的。当我们用普通用户创建新用户的时候,显示不允许,但是还是输出了创建成功的提示信息,显然是不合适的。

        解决方法如下(最终版本):

发布了322 篇原创文章 · 获赞 216 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/Suyebiubiu/article/details/105218658