Linux写一个结合Shell编程的小任务1---批量添加用户账号

批量添加用户账号

具体步骤

1.创建一个users.txt文件

2.添加用户名字到这个文件

3.编写脚本

#!/bin/bash

ULIST=$(cat /root/users.txt)

for UNAME in $ULIST

do

        useradd $UNAME

        echo "123456" | passwd --stdin $UNAME

done

 

脚本解释

这个脚本是一个Bash shell脚本,用于从/root/users.txt文件中读取一系列用户名,并为每个用户名创建一个新的用户账户,同时设置这些用户的密码为123456

读取用户名列表  

ULIST=$(cat /root/users.txt)

这一行使用cat命令读取/root/users.txt文件的内容,并将这些内容赋值给变量ULIST

循环创建用户并设置密码

for UNAME in $ULIST

这一行开始一个for循环,它将遍历$ULIST变量中的每个用户名(以空格为分隔符)

useradd $UNAME

在循环体内,useradd命令用于创建一个新的用户账户,用户名为$UNAME(即当前循环中的用户名)

echo "123456" | passwd --stdin $UNAME

这一行使用管道将echo "123456"命令的输出(即密码123456)传递给passwd --stdin $UNAME命令

passwd --stdin选项允许从标准输入读取密码,并将其设置为指定用户的密码

4.加执行权限

5.执行脚本,密码更改成功

如果想这个shell脚本不停的执行,该怎么办?

#!/bin/bash

ULIST=$(cat /root/users.txt)

for UNAME in $ULIST

do

        id $UNAME > /dev/null 2>&1

        if [ $? -eq 0 ];then

                read -p "用户$UNAME 已存在,是否删除原用户,新建该用户(Y/N)" flag

                if [ $flag == "Y" ];then

                        userdel -r $UNAME

                        useradd $UNAME

                        echo "123456" | passwd --stdin $UNAME > /dev/null

                        echo "用户$UNAME 删除并重新创建成功!"

                fi

        else

                useradd $UNAME

                echo "123456" | passwd --stdin $UNAME > /dev/null

                echo "用户$UNAME创建成功"

        fi

done

(1)脚本解释

id $UNAME > /dev/null 2>&1

这一行使用 id 命令来检查用户 $UNAME 是否存在。> /dev/null 2>&1 使得所有的标准输出和标准错误都被重定向到 /dev/null,即忽略它们

if [ $? -eq 0 ];then

在 Bash 脚本中,$? 是一个特殊的变量,它表示最后一个命令的退出状态。退出状态是一个数字,通常,如果命令成功执行,那么退出状态为 0,否则为非零值

[ $? -eq 0 ] 是一个条件测试,它检查上一个命令的退出状态是否为 0(即是否成功执行)。-eq 是一个整数比较运算符,用于检查两个整数是否相等

整个 if [ $? -eq 0 ]; then 语句的意思是:如果上一个命令成功执行(返回状态为 0),则执行 then 后面的代码块

所以如果上一行(id $UNAME)命令成功执行(返回值为 0),则执行此 if 语句

read -p "用户$UNAME 已存在,是否删除原用户,新建该用户(Y/N)" flag

提示用户是否要删除并重新创建已存在的用户。用户输入的值被赋给变量 flag

if [ $flag == "Y" ];then 

如果用户输入了 "Y",则执行此 if 语句

userdel -r $UNAME

删除用户 $UNAME 以及其家目录

useradd $UNAME

添加新用户 $UNAME

(2)执行脚本

 

结果如上,成功!

    

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值