내 서버에 사용자로 추가하려는 사용자 목록(userlist.txt)이 있습니다.
useradd를 사용하여 추가하고 이름을 주석으로 입력하고 싶습니다.
따라서...파일의 각 줄에는 다음과 같은 내용이 포함됩니다.
vno572,2548,veronica norena,cornerstone group,user,4331,1872,49:46
"vno572" + "veronia norena"를 얻고 다음과 같이 사용자를 추가하고 싶습니다.
useradd vno572 -c "veronica norena"
전체 파일을 반복하여 각 줄에 각 사용자를 추가해야 합니다.
지금까지 나는 이것을 가지고 있습니다 :
cat userlist.txt | while read line
do
echo $userid
userid=’cut -d ‘,’ -f 1 userlist.txt’
echo $name
name=’cut -d ‘,‘ -f 3 userlist.txt’
useradd $userid -c “$name”
done
답변1
awk -F, 'BEGIN { OFS=FS } { print $1, $3 }' userlist.txt |
while IFS=, read username realname; do
useradd -c "$realname" "$username"
done
위의 명령은 awk
제공된 파일에서 첫 번째와 세 번째 열을 선택하고 쉼표로 구분된 사용자 이름과 실제 이름이 뒤따르는 목록을 만듭니다.
쉼표로 구분된 출력을 읽고 awk
쉼표로 분할하여 쉘 변수 username
및 에 저장 realname
하고 useradd
호출합니다.
사용자를 생성할 때 홈 디렉터리도 추가하고 싶을 때가 많습니다. 에 호출을 추가 -m
하면 됩니다 useradd
. 사용자가 특정 그룹에 속해야 하거나 보조 그룹이 있어야 하는 경우 입력 데이터의 다른 정보와 함께 -g
AND를 사용하세요.-G
답변2
아직 테스트되지 않았지만 이것을 사용해보십시오.
cat userlist.txt|awk -F',' '{print $1" "$3}'|while read var1 var2;
do
useradd $var1 -c "$var2"
done
그것이 효과가 있기를 바랍니다 :)
답변3
다음만 사용하세요 awk
:
awk -F, '{ system(sprintf("useradd %s -c \"%s\"", $1, $3)) }' userlist.txt