Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / shell 批量添加用户健壮版

网上传说,曾经有一道迅雷的笔试题,批量添加用户。做法很简单,有个小小的知识点。如何无交互的为用户设置密码。有两种方案:1、expect 2、passwd --stdin 。第一种通用,第二种非RedHat相关版本可能无法使用。大道至简,用第二种。也看到过网上的相关脚本。感觉不太完善,至少,如果添加的用户中,原本有一个已经存在,那么怎么办。很多人都没有处理。对于一个有代码洁癖的Coder。我决定自己写一个。上代码:#!/bin/bash
#load system functions
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
for i in `seq -w 10`
do
        #generate passwd,8 random chars
        passwd=`echo $(date +%t%N)$RANDOM|md5sum|cut -c 2-9`
        #check wheather the username is in the /etc/passwd
        #important awk use the 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} password:${passwd}" >>/tmp/userinfo.txt
        else
                action "The user gccmx$i is add faild!" /bin/false
                echo -e "username:gccmx${i} password:${passwd}" >>/tmp/faild_info.txt
        fi
        unset user_status && unset passwd_status
        sleep 1
done运行效果(gccmx05,已经存在,所以添加失败,用户名密码信息存储在/tmp/user_info.txt里):相关阅读:自动备份脚本 Linux shell 第二版 http://www.linuxidc.com/Linux/2012-11/74219.htmLinux/Unix shell 脚本中调用SQL,RMAN脚本 http://www.linuxidc.com/Linux/2012-09/70310.htmLinux/Unix shell sql 之间传递变量 http://www.linuxidc.com/Linux/2013-01/78811.htmLinux命令之sleep - 延迟指定时间 http://www.linuxidc.com/Linux/2011-04/34758.htmLinux下Shell编程——sed命令基本用法 http://www.linuxidc.com/Linux/2013-06/85526.htm