实验项目四:shell编程添加用户和密码

在这里插入图片描述

实验内容与步骤

1. 使用for循环批量添加linux用户。

首先,创建文件,然后为文件授权,最后运行文件。
首先输入需要添加用户的总数量,然后进入for循环,添加用户。

在这里插入图片描述

在这里插入图片描述
也可以将输出的信息添加到user.txt文件。

在这里插入图片描述

2.名字,数量,密码不能为空if判断。

y=$(echo $num | sed ‘s/[0-9]//g’)
这句将num中素有数字替换成空字符串的代码也可以用以下正则的表达式书写

y=$(echo n u m ∣ s e d ′ s / [ 0 − 9 ] ∗ num | sed 's/^[0-9]*numseds/[09]//g’)
它的意思是如果num是以数字开头和数字结尾的一个纯数字,那么替换成空字符串,否则不做替换

echo $pass | passwd --stdin n a m e namenamei
这句表示给用户赋予新的密码

在这里插入图片描述

在这里插入图片描述

以上是自己输入用户,自己进行添加
下面是添加类似stu1,stu2。。。类似的用户:

#!/bin/bash
read -t 30 -p "input name:" name
read -t 30 -p "input num:" num
read -t 30 -p "input password:" pass
 
if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass"  ]
	then
		y=$(echo $num | sed 's/[0-9]//g')
		if [ -z "$y"  ]
			then
				for (( i=1;i<=$num;i=i+1 ))
					do
						useradd $name$i &>/dev/null
						echo $pass | passwd --stdin $name$i &>/dev/null  	
					done
		fi
fi

在这里插入图片描述

在这里插入图片描述

3.熟练使用sed命令判断num的数字类型命令。

采用if循环,通过sed来判断输入的num变量是否为整数,并在屏幕上进行相应的反馈。

在这里插入图片描述
在这里插入图片描述

4.使用管道操作条件。

管道就是一个进程与另一个进程之间通信的通道,它通常是用作把一个进程的输出通过管道连接到另一个进程的输入。它是半双工运作的,想要同时双向传输需要使用两个管道。管道又可以分为匿名管道和命名管道,shell中使用到的是匿名管道。
管道的本质是内存中的缓冲区,可以看作是打开到内存中的文件。所以需要使用两个文件描述符来索引它,一个表示读端,一个表示写端。并且规定,数据只能从读端读取、只能往写端写入。
在这里插入图片描述

管道的局限性:

① 数据自己读不能自己写。

② 数据一旦被读走,便不在管道中存在,不可反复读取。

③ 由于管道采用半双工通信方式。因此,数据只能在一个方向上流动。

④ 只能在有公共祖先的进程间使用管道。

管道命令的操作符是:”|”,它只能处理由前面一条指令传出的正确输出信息,对错误信息是没有直接处理能力的。然后,传递给下一条指令,作为操作对象。

基本格式: 指令1 | 指令2 | …

【指令1】正确输出,作为【指令2】的输入,然后【指令2】的输出作为【指令3】的输入,如果【指令3】有输出,那么输出就会直接显示在屏幕上面了。通过管道之后【指令1】和【指令2】的正确输出是不显示在屏幕上面的。

在这里插入图片描述

【提醒注意】:

管道命令只能处理前一条指令的正确输出,不能处理错误输出;
管道命令的后一条指令,必须能够接收标准输入流命令才能执行。


版权声明:本文为weixin_43491622原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。