Iterar pelo arquivo de texto e adicionar usuários

0

Eu tenho uma lista de usuários que eu quero adicionar como usuários ao meu servidor (userlist.txt).

Eu quero adicioná-los usando useradd e incluir o nome deles como comentário

então ... cada linha do arquivo contém algo assim:

vno572,2548,veronica norena,cornerstone group,user,4331,1872,49:46

Eu quero pegar "vno572" + "veronia norena" e adicionar o usuário assim:

useradd vno572 -c "veronica norena" 

Eu preciso percorrer todo o arquivo e adicionar cada usuário em cada linha.

Eu tenho isso até agora:

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
    
por noname 06.02.2017 / 04:27

3 respostas

0
awk -F, 'BEGIN { OFS=FS } { print $1, $3 }' userlist.txt |
while IFS=, read username realname; do
    useradd -c "$realname" "$username" 
done

O awk acima selecionará a primeira e a terceira coluna do arquivo fornecido e criará uma lista de nome de usuário separada por vírgula, seguida de um nome real.

A saída separada por vírgulas de awk é lida, dividida em vírgulas e armazenada nas variáveis do shell username e realname e useradd é invocada.

Geralmente, quando alguém cria um usuário, pode-se querer adicionar um diretório inicial para ele ao mesmo tempo. Faça isso adicionando -m à invocação de useradd . Se os usuários fizerem parte de um grupo específico ou tiverem grupos secundários, use -g e -G com outras informações contidas nos dados de entrada.

    
por 06.02.2017 / 09:14
0

Tente com este, ainda não testado:

cat userlist.txt|awk -F',' '{print $1" "$3}'|while read var1 var2;
do
useradd $var1 -c "$var2"
done

Espero que funcione:)

    
por 06.02.2017 / 06:25
0

Usando apenas awk :

awk -F, '{ system(sprintf("useradd %s -c \"%s\"", $1, $3)) }' userlist.txt
    
por 06.02.2017 / 08:56

Tags