텍스트 파일을 반복하고 사용자를 추가합니다.

텍스트 파일을 반복하고 사용자를 추가합니다.

내 서버에 사용자로 추가하려는 사용자 목록(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. 사용자가 특정 그룹에 속해야 하거나 보조 그룹이 있어야 하는 경우 입력 데이터의 다른 정보와 함께 -gAND를 사용하세요.-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

관련 정보