운영 체제에 사용자를 추가하는 프로젝트가 있는데 이러한 사용자는 텍스트 파일에 있습니다. 지금까지 이것을 작성했지만 작동하지 않습니다. 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}"
답변1
이 질문은 숙제/과제처럼 보이므로 여기서는 완전한 솔루션을 보여주지 않습니다.
거의 같은 문제가 있습니다https://stackoverflow.com/q/65303035/10622916.
문제의 스크립트는 입력 파일의 개별 줄을 처리하지 않습니다. 각 주기마다 하나의 행을 읽고 처리하는 루프가 필요합니다.
질문에 사용된 명령은 cut
지정된 열의 모든 값을 변수에 할당합니다(예: 공백으로 구분된 모든 사용자 이름).
USERNAME="charbel assil marwan michel"
한 줄만 처리하는 경우 여러 cut
명령을 사용하면 효과가 있지만 비효율적입니다.
파일을 한 줄씩 처리하고 입력 필드를 개별 변수에 할당하는 방법에 대한 예는 다음을 참조하세요.https://mywiki.wooledge.org/BashFAQ/001. 콜론으로 구분된 필드를 처리하는 방법과 입력에 필요한 것보다 더 많은 필드가 포함될 수 있는 경우 수행할 작업에 대한 몇 가지 예가 있습니다.