Linux
從文件將使用者添加到作業系統
我有一個項目,包括將使用者添加到作業系統,這些使用者在一個文本文件中。到目前為止我已經寫了這個但是它不起作用,告訴我 useradd 不能正常工作。你能告訴我有什麼問題嗎?
該文件的內容
user.txt
是:charbel:password:1001:1001:Charbel Haddad:/home/charbel:/bin/bash:0:30:15:7:y assil:p@ssw0rd:1002:1002:Assil:/home/assel:/bin/bash:0:30:10:5:n marwan:p@ssw0rd:1003:1003:Marwan Ghantous:/home/marwan:/bin/bash:0:50:30:7:n michel:password:1004:1004:Michel:/home/michel:/bin/bash:1:30:10:5:y
腳本:
FILE="user.txt" USERNAME=$(cut -d ":" -f 1 $FILE) PASSWORD=$(cut -d ":" -f 2 $FILE) USER_ID=$(cut -d ":" -f 3 $FILE) GROUP_ID=$(cut -d ":" -f 4 $FILE) USER_INFO=$(cut -d ":" -f 5 $FILE) HOME_DIRECTORY=$(cut -d ":" -f 6 $FILE) SHELL=$(cut -d " " -f 7 $FILE) MIN=$(cut -d ":" -f 8 $FILE) MAX=$(cut -d ":" -f 9 $FILE) INACTIVE=$(cut -d ":" -f 10 $FILE) WARNING=$(cut -d ":" -f 11 $FILE) useradd -m -c "${USERNAME}" "${PASSWORD}" "${USER_ID}" "${GROUP_ID}" "${USER_INFO}" "${HOME_DIRECTORY}" "${SHELL}" "${MIN}" "${MAX}" "${INACTIVE}" "${WARNING}"
這個問題看起來像家庭作業/作業,這就是為什麼我沒有在這裡展示完整的解決方案。
有一個幾乎相同的問題https://stackoverflow.com/q/65303035/10622916。
問題中的腳本不處理輸入文件的各個行。您需要一個在每個循環中讀取和處理一行的循環。
問題中使用的
cut
命令會將指定列中的所有值分配給變數,例如用空格分隔的所有使用者名,例如USERNAME="charbel assil marwan michel"
如果您只處理一行,則使用多個
cut
命令將起作用,但效率低下。有關如何逐行處理文件並將輸入欄位分配給各個變數的範例,請閱讀https://mywiki.wooledge.org/BashFAQ/001。有一些範例如何處理用冒號分隔的欄位,以及如果輸入可能包含比您需要的更多的欄位該怎麼辦。