2016-12-16 152 views
-1

我有一個互動的bash腳本,首先要求用戶名,然後索要密碼,然後再次確認密碼。 (它不會在Ubuntu中創建我們ERP系統中的用戶)交互式bash腳本

我有一個包含1000個用戶的CSV和隨機生成的密碼,因此我必須創建所有這些用戶。我想編寫一個腳本,它採用主從CSV用戶,然後當問密碼是通過從CSV密碼創建用戶。以下是我所做的,但它沒有按預期工作:

while IFS=, 
read -a csv_line; do 
createusr ${csv_line[0]}:${csv_line[1]}:${csv_line[1]};done < Desktop/Passwoerter.csv 

它給出錯誤,密碼不匹配! 像個人用戶的工作實際腳本:

~$ createuser xyz <press Enter> 
password for xyz: whatever <press enter> 
confirm password for xyz whatever <enter again> 
~$ 

它不是:

~$ createuser xyz whatever whatever <press enter> 
~$ 

它工作正常,如果我通過一個加一,但也有1000+,所以我使用了一個小腳本試圖CSV。

回答

1

第一個選項:使用newusers:它passwd包的一部分。

DESCRIPTION 
    The newusers command reads a file (or the standard input by default) 
    and uses this information to update a set of existing users or to 
    create new users. Each line is in the same format as the standard 
    password file. 

輸入文件格式:

username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell 

正如你所看到的,password在文件中提供。

缺點:您需要使用提供的格式將您的csv轉換爲txt。

newusers < file.txt 

第二個選項:可以使用useradd-p開關。

useradd -m -p $(mkpasswd "password") username 

-m創建用戶的主目錄,如果它不存在。

-p crypt(3)返回的加密密碼。

+0

沒有,我有一個腳本這是一個ERP的一部分來創建這些用戶並創下DB和已經存在的腳本來創建用戶並保存在數據庫的各種表格所需信息的各種表格,所以我只能用這個腳本來創建用戶。 – User2403

+0

這就造成同一用戶,你只需要'你csv'轉換成提供的格式或使用第二個選項,並在'variables'提供值。 –

+0

我要創建的用戶對我們的ERP,而不是Ubuntu的,所以第一個腳本這樣做,但一次一個 – User2403

0

我發現我需要什麼,我的劇本是這樣的:

while IFS=# read -a csv_line 
do 
    printf "%s\n%s\n" ${csv_line[1]} ${csv_line[1]} | createuser ${csv_line[0]} 
done 

和等執行:

./insertalluser < Desktop/Passwoerter.csv