Ich habe Probleme beim Parsen einer CSV-Datei zum Hinzufügen von Benutzern.
Ich habe ein kleines Skript geschrieben, um eine Liste mit 1000 Benutzern hinzuzufügen:
export IFS=","
cat users.csv | while read a b c d e f g; do useradd -d -u $a -U $d ; done
Die CSV-Datei hat folgendes Format:
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
Beim Ausführen des Skripts durchläuft es jedoch die gesamte Datei und wiederholt:
useradd: invalid home directory '-u'
Ich habe „export IFS“ verwendet, um die Wörter durch Kommas zu trennen und sie als Parameter für den Befehl „useradd“ zu verwenden.
Ich habe das Handbuch gelesen und den Wert für das Home-Verzeichnis verwendet, aber ich habe das Gefühl, dass mein gesamtes Skript falsch ist.
Kann mir bitte jemand helfen, ein Skript zum Hinzufügen von Benutzern aus einer CSV-Datei richtig zu formatieren?
Als Referenz habe ich diesen Thread als Grundlage verwendet:https://stackoverflow.com/questions/4439536/Shell-Skript zum Analysieren einer CSV-Datei und zum zeilenweisen Verarbeiten
Antwort1
useradd
Der Fehler liegt daran, dass Sie mit der Option aufrufen -d
, die erwartet, dass das nächste Wort der Home-Verzeichnispfad oder der Verzeichnisname im Standard-Home-Verzeichnis ist (nicht -u
).
Versuchen Sie als ersten Vorschlag:
cat users.csv | while read a b c d e f g; do useradd -d "$a" -U "$d" ; done