shell经典面试题根据文件创建用户名及密码(亲测)

本文介绍了如何使用Shell脚本根据文件内容批量创建用户和密码。通过按行读取文件,利用awk提取用户名和密码,然后使用useradd和passwd命令非交互式创建用户。同时,脚本还包括了对用户已存在情况的处理和判断是否为root用户的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载来源 :shell经典面试题根据文件创建用户名及密码 : https://www.jianshu.com/p/eeb455eef7ca

01 前言

shell脚本已经学习了很长一段时间了,现在时不时来看一些经典的面试题,复习一些常用知识点,温故知新,为明天做准备~

02 根据文件内容创建用户名及密码

背景:写一个脚本,满足一下需求及应用,如一个文件的内容如下,根据文件内容实现批量创建用户,第一列为用户名,第二列为密码
在这里插入图片描述
在这里插入图片描述
测试文件test.list
这个题目相信大家都很熟悉了,面试甚至是实际工作应用当中都会经常用到

今天我们来看看实现思路。

第一步:按行读取文件,推荐用while read line 的模式

先写脚本框架
在这里插入图片描述
while read line 按行读取文件
第二部:将用户名和密码分别取出来,并赋值给变量
这里用awk实现
在这里插入图片描述
取出用户名、密码列并赋值
第三步:创建用户用useradd,同步创建密码可以用非交互式实现,即
在这里插入图片描述
创建用户名及密码
第四步:考虑几种特殊情况

万一要创建的用户本来就存在呢?所以应加个判断,用户存在不做操作,用户不存在再执行
在这里插入图片描述
考虑用户已存在的情况
还有,创建用户操作只有root账户有权限,所以一开始就应该判断当前用户是不是root

判断用户是不是root
脚本就写好啦,执行一下看看效果:

测试效果
可以看到,用户和密码都已成功创建,但是id判断用户时有不想看到的输出,再改一下,完整的脚本如下:

#!/bin/bash
while read i
do
  user=`echo $i | awk '{print $1}'`
  pass=`echo $i | awk '{print $2}'`

  id $user || useradd $user
  echo $pass | passwd $user --stdin

done < test.list

在这里插入图片描述
完整脚本
再次执行,就不会有用户不存在这条无须存在的输出了

03 总结

这是一个工作和面试都非常经典的案例,知识点总结如下:

3.1 判断用户是否为root,echo $UID ,root账户为0,其余非0

3.2 按行读取文件,while read line 模式

3.2 判断用户是否存在,id user

3.4 非交互式创建用户名及密码 echo ****** | passwd user --stdin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值