当前位置: > shell编程 >

shell 批量添加用户

时间:2014-04-29 02:19来源:linux.it.net.cn 作者:IT网

网上传说,曾经有一道迅雷的笔试题,批量添加用户。做法很简单,有个小小的知识点。如何无交互的为用户设置密码。有两种方案:1、expect 2、passwd --stdin 。第一种通用,第二种非redhat相关版本可能无法使用。大道至简,用第二种。也看到过网上的相关脚本。感觉不太完善,至少,如果添加的用户中,原本有一个已经存在,那么怎么办。很多人都没有处理。对于一个有代码洁癖的Coder。我决定自己写一个。上代码:

#!/bin/bash
#load system functions
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
fori in`seq -w 10`
do
#generate passwd,8random chars
passwd=`echo $(date +%t%N)$RANDOM|md5sum|cut -c 2-9`
#check wheather the username isinthe /etc/passwd
#important awk usethe shell variable
check=`awk -F ':''/^'gccmx$i'/ {print $1}'/etc/passwd`
if[ -z "$check"];then
useradd gccmx$i &>/dev/null&& user_status=$?
echo $passwd | passwd --stdin gccmx$i &>/dev/null&& passwd_status=$?
else
user_status=1
passwd_status=1
fi
if[ "$user_status"-eq 0-a "$passwd_status"-eq 0];then
action "The user gccmx$i is add successfully!"/bin/true
echo -e "username:gccmx${i}\tpassword:${passwd}">>/tmp/userinfo.txt
else
action "The user gccmx$i is add faild!"/bin/false
echo -e "username:gccmx${i}\tpassword:${passwd}">>/tmp/faild_info.txt
fi
unset user_status && unset passwd_status
sleep 1
done

运行效果(gccmx05,已经存在,所以添加失败,用户名密码信息存储在/tmp/user_info.txt里):

 

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容