簡體   English   中英

我的腳本無法正常工作

[英]My script does not work properly

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

我希望我已經正確解釋了,感謝所有幫助。

您可以簡化腳本並將其修改如下(我僅指的是第一部分):

  #!/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

這將創建一個文件user.txt,就像下面這樣:

user1:ohng3uxohYi9:/home/user1:/bin/bash
user2:Gah5kiehaemi:/home/user2:/bin/bash

我看不到用用戶創建文件然后將@符號替換為生成的密碼沒有意義,因為您可以從一開始就這樣做!

您可以通過取消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

這樣一來,您可以一次性獲得用戶名和密碼,並且可以確保獲得與密碼一樣多的用戶名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM