【发布时间】:2017-02-03 20:36:51
【问题描述】:
Problem: 我需要创建一个存储用户和密码的文件。但是我的脚本只保存了user1的密码。
Example:我用一个例子更好地解释自己。当使用随机密码创建两个用户时,我的脚本会为两个用户分配相同的密码。
user1:Eehei5oo8ohz:/home/user1:/bin/bash
user2:Eehei5oo8ohz:/home/user2:/bin/bash
当我的脚本的结果应该是这样的:
user1:Eehei5oo8ohz:/home/user1:/bin/bash
user2:Kln2149sdpja:/home/user2:/bin/bash
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
希望我的解释正确并感谢所有帮助。
【问题讨论】:
-
sed -i "s/x/$i/" users.txt将替换所有x字符,而不仅仅是第一个字符。而不是之后替换x,只需在第一次生成并添加密码即可。 -
您可以改进您的脚本。为什么不在第一个循环的同一迭代中创建密码和用户条目?
-
@Jdamian 感谢您的帮助,但是,我如何获得它不会重复相同的键?我用我的新代码编辑了帖子
-
你为 i 做了 2 次!在(第 1 次)中为 i 做 a,在(第 2 次)中为 j 做 a。不要使用完全相同的变量!所以对于 {1..2} 中的 i 和 $pass 中的 j。试试这样,看看是否有效
-
@BogdanStoica 对不起,但不工作。