Tengo problemas para analizar un archivo CSV para agregar usuarios.
Escribí un pequeño script para agregar una lista de 1000 usuarios:
export IFS=","
cat users.csv | while read a b c d e f g; do useradd -d -u $a -U $d ; done
El archivo CSV tiene el formato:
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
Sin embargo, al ejecutar el script, recorre todo el archivo repitiendo:
useradd: invalid home directory '-u'
Utilicé export IFS para separar las palabras por coma y usarlas como parámetros para el comando useradd.
Leí el manual y utilicé el valor para el directorio de inicio, pero siento que todo mi script está desactivado.
¿Alguien puede ayudarme a formatear correctamente un script para agregar usuarios desde un archivo CSV?
Como referencia utilicé este hilo como base:https://stackoverflow.com/questions/4439536/shell-script-to-parse-through-a-file-csv-and-process-line-by-line
Respuesta1
El error se debe a que está llamando useradd
con la -d
opción , que espera que la siguiente palabra sea la ruta del directorio de inicio o el nombre del directorio en el directorio de inicio predeterminado (no -u
).
Como primera sugerencia, prueba:
cat users.csv | while read a b c d e f g; do useradd -d "$a" -U "$d" ; done