55. 脚本:批量创建特殊要求用户
3. 批量创建特殊要求用户¶
批量创建10个系统账号oldboy01-10并设置密码(密码要求字符数字等混合)
此题重点:必须要,经常考,要给出2种以上方法
思路分析
1) 01..10产生方法
echo {01..10}
seq -w 10
2) 随机数
openssl rand -base64 100
3) 创建用户
useradd oldboy01
4) 设置密码
echo 密码|passwd --stdin
方法2:
chpasswd oldboy01:passwd
脚本
#!/bin/bash
for n in {01..10}
do
pass=`openssl rand -base64 10`
useradd oldboy$n
echo $pass|passwd --stdin oldboy$n
echo -e "oldboy$n\t$pass" >>/tmp/user.list
done
方法2
#!/bin/bash
for n in `seq -w 1 10`
do
pass=`openssl rand -base64 10`
useradd oldboy$n
echo "oldboy$n:$pass" >> /tmp/chpasswd.log
done
chpasswd < /tmp/chpasswd.log
改进:加上root用户验证
#!/bin/bash
. /etc/init.d/functions
if [ $UID -ne 0 ];then
echo "必须使用root用户执行本脚本!!!"
exit 1
fi
for n in {20..30}
do
pass=`openssl rand -base64 10`
if [ `grep -w "oldboy$n" /etc/passwd|wc -l` -eq 0 ];then
useradd oldboy$n &>/dev/null
echo $pass|passwd --stdin oldboy$n &>/dev/null && \
echo -e "oldboy$n\t$pass" >>/tmp/user.list && \
action "oldboy$n is ok." /bin/true
else
action "oldboy$n is fail." /bin/false
fi
done
3.1 批量创建10个用户stu01-stu10,设置随机8为密码,要求只能用linux命令及管道实现,不能用循环¶
方法1:(以下方法都未验证。。。)
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/lodboy.log#g'|bash
拆解如下
useradd stu01;
pass=$((RANDOM+10000000));
echo "$pass"|passwd --stdin stu01;
echo -e "stu01 `echo "$pass"`">>/tmp/oldboy.log
方法2
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
方法3
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
方法4
echo stu{01..10}|tr ' ' '\n'|sed -rn 's@^(.*)$@useradd\1;echo $RANDOM |md5sum|cut -c 1-8 >/data/\1;cut /data/\1|passwd --stdin \1@gp'|bash
最后更新:
2022-02-19 13:59:07