[英]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.