老男孩教育第五关实战考试题:批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现。


useradd

passwd --stdin $


先创建用户再创建密码

useradd $user:passwd $pass


创建用户把密码交给chpasswd



echo stu{11..12}|xargs -n1 useradd ;echo stu{11..12}:`cat /dev/urandom|tr -dc 0-9|fold -w8|head -1`|xargs -n1|tee -a pass.txt|chpasswd

参考答案:

自己做出

echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=`echo $[$RANDOM]|md5sum|cut -c1-8`;echo $pass|passwd --stdin \1;echo -e "\1 \t `echo "$pass"`">>/tmp/oldboy.log#g'|bash

参考答案:

echo stu{21..30} | tr ' ' '\n' | sed -e 's/^/useradd /' -e 's/\(stu[0-9]\{2\}\)$/\1 \&\& echo "\1:`echo $[$RANDOM**3] | cut -c1-8`" | tee -a userInfo.txt | cut -d: -f2 | passwd --stdin \1/' | bash

自己做出来:

echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;echo "\1":`echo $[$RANDOM**3]|cut -c1-8`|tee pass|cut -d: -f2|passwd --stdin \1#g'|bash

参考答案:

echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1 ; pass=$((RANDOM+10000000)); echo "$pass"|passwd --stdin \1; echo -e "\1 \t `echo "$pass"`">>/tmp/oldboy.log#g'|bash

参考答案:

echo stu{01..10}:$RANDOM|tee user|xargs -n1|awk -F ':' '{print "useradd "$1 "; echo " $2 "|passwd -f -u " $1 " --stdin"}'|bash

自己做出来:

echo stu{01..10}:`echo $[$RANDOM+10000000]|cut -c1-8`|tr " " "\n"|tee pass|awk -F ':' '{print "useradd " $1";echo "$2"|passwd "$1" --stdin"}'|bash


FileName="/tmp/user.txt"&&test -e $FileName||echo stu{01..10}:`head -1 /dev/urandom|md5sum|cut -c 1-8`|tr " " "\n">$FileName&&cat $FileName|sed -nr "s/(^.*):(.*)/useradd  \1 \ \&\& echo \"\2\"|passwd  \1 --stdin/gp"|bash 2>/dev/null >$FileName.log;echo