批量添加用户
2015-05-02 06:47
811 查看
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
相关文章推荐
- 批量添加用户
- linux用户管理之批量添加用户且ftp登陆-nologin
- ecmall 商铺会员 批量导入 批量添加用户 批量导入商品
- Lync 2010 批量添加分组和用户(LyncAddContacts)
- 利用shell实现批量添加用户
- 批量添加删除用户
- 一个有意思的shell――批量添加用户
- Dynamics CRM 批量添加用户时,报错:Server was unable to process request.
- 脚本实现批量添加用户
- 批量添加用户
- 利用脚本批量添加域用户账户
- Win10 Mobile预览版10166:用户可批量添加节电模式在后台应用
- 在AD中批量添加多个用户帐号
- jQuery——添加用户并 批量删除
- 用户信息列表 查询+年龄,性别搜索 +全部删除,批量删除+添加用户+修改密码
- 批量添加用户3个,分别为std01,std02,std03,并为这三个用户设定8位随机密码
- Linux下批量添加/删除用户
- linux中批量添加用户
- 在AD中批量添加多个用户帐号
- shell批量添加用户