Problem:
我需要创建一个存储用户和密码的文件。但我的脚本只保存user1的密码。
Example:
我用一个例子更好地解释自己。当使用随机密码创建两个用户时,我的脚本会为两个用户分配相同的密码。
用户1:Eehei5oo8ohz:/家/用户1:/斌/庆典
用户2:Eehei5oo8ohz:/家/用户2:/斌/庆典
当我的脚本结果应该是这样的时候:
用户1:Eehei5oo8ohz:/家/用户1:/斌/庆典
用户2:Kln2149sdpja:/家/用户2:/斌/庆典
My script:
这是我用过的脚本:
#!/bin/bash
##Checking if you are root.##
if [ `id -u` -ne 0 ]
then
echo "you dont are a root user."
exit 1
fi
x=`pwgen 12 1`
for i in {1..2}
do
echo "user$i:@:/home/user$i:/bin/bash" >> users.txt
done
for j in $x
do
sed -i "s/@/$j/" users.txt
done
newusers users.txt
users=`cat users.txt`
login=`echo $i | cut -d: -f1` #username
pass=`cat pass.txt | tr " " _`
password1=`echo $i | cut -d: -f2` #password
for in $users
do
echo "$login:$password1" | chpasswd -m
done
rm users.txt
rm pass.txt
我希望我已经正确解释并感谢所有帮助。
答案 0 :(得分:1)
您可以简化脚本并按如下方式进行调整(我只是指第一部分):
#!/bin/bash
# checking if you are root.##
if [ `id -u` -ne 0 ]
then
echo "you are not the root user!"
exit 1
fi
for i in {1..2}
do
x=`pwgen 12 1`
echo "user$i:$x:/home/user$i:/bin/bash" >> users.txt
done
这将创建一个文件users.txt,如下所示:
user1:ohng3uxohYi9:/home/user1:/bin/bash
user2:Gah5kiehaemi:/home/user2:/bin/bash
我认为用用户创建文件然后用生成的密码替换@符号是没有意义的,因为你可以从一开始就这样做!
答案 1 :(得分:0)
您可以通过删除sed编辑来简化此脚本,例如更改:
for i in {1..2}
do
echo "user$i:@:/home/user$i:/bin/bash" >> users.txt
done
for j in $x
do
sed -i "s/@/$j/" users.txt
done
到
pass=`cat pass.txt`
i=1
for pw in $pass
do
echo "user$i:$pw:/home/user$i:/bin/bash" >> users.txt
((i++))
done
通过这种方式,您可以一次性获取用户号码和密码,并且您可以获得与密码一样多的用户名。