批量添加用户

a、创建用户文件,因为添加的用户比较多,因此编写脚本创建一个用户文件user.txt
        #!/bin/bash
        #创建九个用户名和对应的密码
        for i in `seq 9`
        do
            echo "user$i passwd$i">>user.txt
        done
b、创建好用户文件后,开始添加。
        1、使用的命令useradd,passwd。
        2、使用的循环是多种的,for,while,until,而读取的是行,所以使用for或着while
            它们的区别呢?看看下面的实例
            #!/bin/bash
            count=0
            for line in `cat user.txt`
            do
                echo $line
                let count+=1
            done
            echo $count
            结果:
                user1
                passwd1
                user2
                passwd2
                user3
                passwd3
                user4
                passwd4
                user5
                passwd5
                user6
                passwd6
                user7
                passwd7
                user8
                passwd8
                user9
                passwd9
                18
            #!/bin/bash
            count=0
            while read line
            do
                echo $line
                let count+=1
            done < user.txt
            echo $count
            结果:
                user1 passwd1
                user2 passwd2
                user3 passwd3
                user4 passwd4
                user5 passwd5
                user6 passwd6
                user7 passwd7
                user8 passwd8
                user9 passwd9
                9

        观察发现,while具有更好的读取行的特性。for循环读取文件时,会使用任何空白字符作为其读取的分割符,而while使用的是换行符。如果,使用的是其他的分割符,则两者都可以。
    3、截取行,分离用户名和密码。
        #!/bin/bash
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            passwd=`echo $line | cut -d‘ ‘ -f2`
            echo $user":"$passwd
        done < user.txt
        注意:指定-d,默认是制表符
    4、截取出来之后就是添加用户和密码了
        #!/bin/bash
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            passwd=`echo $line | cut -d‘ ‘ -f2`
            #echo $user":"$passwd
            useradd $user
            passwd $passwd
        done < user.txt
        结果:
            输入新的 UNIX 密码: 重新输入新的 UNIX 密码: Sorry, passwords do not match
            passwd:认证令牌操作错误
            passwd:密码未更改
            输入新的 UNIX 密码: 重新输入新的 UNIX 密码: Sorry, passwords do not match
            passwd:认证令牌操作错误
            passwd:密码未更改
            输入新的 UNIX 密码: 重新输入新的 UNIX 密码: Sorry, passwords do not match
            passwd:认证令牌操作错误
            passwd:密码未更改
        原来passwd要求管理员手工输入密码!那怎么办呢?不用担心,使用--stdin
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            passwd=`echo $line | cut -d‘ ‘ -f2`
            #echo $user":"$passwd
            useradd $user
            echo $passwd | passwd --stdin $user
        done < user.txt
        结果:passwd:无法识别的选项“--stdin”
        原来ubuntu不支持这个。
        继续改:
        #!/bin/bash
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            passwd=`echo $line | cut -d‘ ‘ -f2`
            #echo $user":"$passwd
            useradd $user
            echo $user":"$passwd | chpasswd
        done < user.txt
        结果:
            useradd:用户“user1”已存在
            useradd:用户“user2”已存在
            useradd:用户“user3”已存在
            useradd:用户“user4”已存在
            useradd:用户“user5”已存在
            useradd:用户“user6”已存在
            useradd:用户“user7”已存在
            useradd:用户“user8”已存在
            useradd:用户“user9”已存在
        虽然有这个问题,但是密码还是设置好了。但是这个是不合里的,达到的效果应该是,如果用户存在,那么就不再重新设置密码,否则,不管存在不存在都修改,那原用户的密码就被重置了。
        写一个批量删除脚本
        #!/bin/bash
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            userdel -r $user 2>/dev/null
        done <user.txt
        好了,重新改:
        #!/bin/bash
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            passwd=`echo $line | cut -d‘ ‘ -f2`
            #echo $user":"$passwd
            useradd $user 2>/dev/null  && echo $user":"$passwd | chpasswd
        done < user.txt
        如果用户已存在,但是我们添加的时候得不到任何信息,改正使之人性化
        #!/bin/bash
        while read line
        do
            user=`echo $line | cut -d‘ ‘ -f1`
            passwd=`echo $line | cut -d‘ ‘ -f2`
            #echo $user":"$passwd
            useradd $user 2>/dev/null
            if [ $? -eq 0 ];then
                echo $user":"$passwd | chpasswd
            else
                echo "$user exists,skip set passwd"
            fi
        done < user.txt
c、结束
    #最终脚本
    #!/bin/bash
    while read line
    do
        user=`echo $line | cut -d‘ ‘ -f1`
        passwd=`echo $line | cut -d‘ ‘ -f2`
        #echo $user":"$passwd
        useradd $user 2>/dev/null
        if [ $? -eq 0 ];then
            echo $user":"$passwd | chpasswd
        else
            echo "$user exists,skip set passwd"
        fi
    done < user.txt
时间: 2024-12-20 14:25:39

批量添加用户的相关文章

利用shell实现批量添加用户

批量添加用户并设置随机密码,把添加的用户的名字和密码保存到文件中. [[email protected] scripts]# cat user.sh #!/bin/sh for i in `seq -w 10` do pass=$(echo "`date`$RANDOM"|md5sum|cut -c 1-8) //取随机数的方法是date结果和random随机数拼接并计算md5值取前8位 useradd kg$i echo "$pass"|passwd --stdi

SHELL脚本批量添加用户

在Linux服务中添加相应的用户账号,初始密码均为"123456".可以先指定所有用户的列表文件,然后编写一个名为uadduser.sh的脚本 [[email protected] ~]# vim /root/users.txt                       //新建一个指定所有用户的列表文件xiaomingxiaoqingxiaofangxiaodong [[email protected] ~]# vim uadduser.sh         //创建批量添加用户的

为Discuz! X3.2批量添加用户的python脚本

为Discuz! X3.2批量添加用户的python脚本 搭建了一个Discuz! X3.2环境用于工作,需要添加用户时没有找到合适的工具,虽然同事最终用按键精灵解决了问题,不过还是决定写一段代码留下来,也许用得上. 之所以是Python而不是PHP,只是最近在接触Python,发现在这种场合更加方便. 添加用户代码: # encoding: utf-8 ''' Created on 2015年7月1日 @author: ZhongPing ''' import urllib import ur

Centos6配置samba服务器并批量添加用户和文件夹

一.需求 局域网内有若干用户,所有用户访问一个共享目录 每个用户在共享目录里有自己的文件夹 每个用户都可以读取其他人的文件夹 每个用户只能对自己的文件夹有写入权限 所有用户都属于filesgroup组 二.环境 服务器:Centos6 主机名:fileserver IP地址:192.168.1.2 用户端IP网段: 192.168.1.0/24 , 192.168.2.0/24 , 172.16.1.0/24 三.配置步骤 1.安装samba,备份原始配置文件,编辑配置文件 [[email pr

批量添加用户和删除用户

批量添加用户: 思路:1.要求用户输入一个用户名,输入要创建用户的数量,以及密码 2.判断用户输入的用户名,数量,以及密码是否为非空:如果为空,直接跳过结束:只 有输入的值为非空才执行下面的语句: 3.判断输入的$num是否为数字,为数字执行下面的语名,否则不执行 #!/bin/bash #author:limingyu (Email:[email protected]) #批量添加用户 read -p "please input username: " -t 30 name read

shell脚本之批量添加用户

没错,这是一个简单的脚本,不写不知道,写了才发现自己有多少不足. 下面的脚本主要用于批量添加用户的脚本,本来很简单的脚本,但是添加了一些判断,验证自己学习. 1.判断用户输入是否有误 2.判断用户是否存在,存在就跳过不再处理 代码如下: #/bin/bash #批量添加用户脚本   #判断用户是否存在函数 function panduan()     {         for nametmp in $(cat /tmp/user.txt)             do             

shell 脚本实战笔记(9)--linux自动批量添加用户

前言: 添加linux用户帐号,这个相对简单, 在面对集群, 许多机器的时候, 我们该如何去做和实现? 这篇短文, 简单讲解一些思路, 尽可能地涉及周边的一些知识点. 不光是运维人员会面临这个问题, 对一个基于linux平台的集群服务或软件(比如hadoop集群), 有时也会涉及到这块. 应用场景: 是以centos 6.4作为演示的系统, 其他的系统有类同, 也有差异, 且以实战演练, 一步步的讲述下流程. *) 实战演练 查阅useradd的使用和参数选项useradd --help -d,

(转)通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加

通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加 原文:http://www.21yunwei.com/archives/4773 有一个朋友问我如何批量创建用户和设置密码 ,我就简单给他写了两个脚本,让他自己参考下并自己根据实际情况进行修改,毕竟他需要的用户名和密码都是实际生产环境的. 这里分两种情况,一种是测试for循环批量添加用户,一个是根据实际生产环境进行批量添加.分别写一下案例如下:1,for添加指定类型用户以及设置随机密码.脚本作用:批量添加user1-10用

工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本

一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话"Hello World!!"   2> 编写一个能输出系统信息的 /root/sysinfo 脚本,执行后依次输出当前红帽系统的版本信息.当前使用的内核版本.当前系统的主机名 方案: 规范Shell脚本的一般组成: 1> #! 环境声明(Sha-Bang)    2> # 注释文本 

gitlab批量添加用户的方法

gitlab批量添加用户的方法要在gitlab中添加新的用户,可以用管理员账户在登录gitlab后进入admin area页面,进行添加用户的操作.但是这样只能手工进行操作,一次只能添加一个用户.如果需要一次添加大量用户,不仅操作速度慢,还很容易出错.要能够?批量添加用户,一个比较好的解决方案是使用gitlab提供的api接口.gitlab API的使用可以参考的gitlab的帮助文档,gitlab提供了很多语言的api 客户端.这里只介绍最简单的http方法.所有的api请求都要进行身份验证,