Estou tendo problemas para analisar um arquivo CSV para adicionar usuários.
Escrevi um pequeno script para adicionar uma lista de 1.000 usuários:
export IFS=","
cat users.csv | while read a b c d e f g; do useradd -d -u $a -U $d ; done
O arquivo CSV está formatado como:
ps2946,male,Phil Harris,Recording,6508 Hollywood Blvd,Nov 16 1950,760 901 3537
mc3225,male,Mel Blanc,Radio,6385 Hollywood Blvd.,Oct 1 1983,626 647 5560
fn1029,male,Franklin Pangborn,Motion pictures,1500 Vine Street,Mar 10 1911,858 497 6108
we9602,undefined,Webb Pierce,Recording,1600 Vine Street,Sep 3 1988,559 595 6063
No entanto, ao executar o script, ele percorre todo o arquivo repetindo:
useradd: invalid home directory '-u'
Usei export IFS para separar as palavras por vírgula e usá-las como parâmetros para o comando useradd.
Li o manual e usei o valor do diretório inicial, mas sinto que todo o meu script está errado.
Alguém pode me ajudar a formatar corretamente um script para adicionar usuários de um arquivo CSV?
Para referência usei este tópico como base:https://stackoverflow.com/questions/4439536/shell-script-to-parse-through-a-file-csv-and-process-line-by-line
Responder1
O erro ocorre porque você está chamando useradd
com a -d
opção , que espera que a próxima palavra seja o caminho do diretório inicial ou o nome do diretório no diretório inicial padrão (não -u
).
Como primeira sugestão, tente:
cat users.csv | while read a b c d e f g; do useradd -d "$a" -U "$d" ; done