我的脚本无法正常运行

时间:2017-02-03 20:36:52

标签: linux bash shell debian

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

我希望我已经正确解释并感谢所有帮助。

2 个答案:

答案 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

通过这种方式,您可以一次性获取用户号码和密码,并且您可以获得与密码一样多的用户名。