speedy-luis
Goto Top

User Import aus Textdatei

Hallo Miteinander!

Ich möchte in Linux einige User automatisiert erstellen bzw. importieren.
Dazu habe ich eine Textdatei, welche aus zwei Spalten besteht. In der ersten ist der Username in der zweiten das Passwort. (Fragt nicht, ist von meinem "Vorgänger")

Für die User soll ein Homeverzeichnis angelegt werden und es soll allen die /bin/false zugewiesen werden.

Wie löse ich das am besten?

Gruß Speedy

Content-Key: 229797

Url: https://administrator.de/contentid/229797

Printed on: April 19, 2024 at 14:04 o'clock

Member: Clijsters
Clijsters Feb 14, 2014 at 17:49:24 (UTC)
Goto Top
Hi Speedy!

Erstmal der obligatorische Hinweis: Linux Benutzer erstellen

Schau mal, sowas könnte was sein: Create Users from CSV Stammt aus der oben aufgeführten Suche

Und gucke mal, hier werden z.B. User mit Eingabeaufforderung erstellt: Kommt auch aus der obigen Suche
#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
	read -p "Enter username : " username  
	read -s -p "Enter password : " password  
	egrep "^$username" /etc/passwd >/dev/null  
	if [ $? -eq 0 ]; then
		echo "$username exists!"  
		exit 1
	else
		pass=$(perl -e 'print crypt($ARGV, "password")' $password)  
#Der eigentliche Kram passiert hier:
		useradd -m -p $pass $username
		[ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"  
	fi
else
	echo "Only root may add a user to the system"  
	exit 2
fi
Das Einlesen aus einer CSV ist in den ersten Google-Links in mehreren Varianten beschrieben.

Beste Grüße
Dominique
Member: speedy-luis
speedy-luis Feb 18, 2014 updated at 10:55:50 (UTC)
Goto Top
Hallo Clijsters,

danke für deine Antwort, aber das hilft mir nicht weiter.
Natürlich habe ich schon einiges gegoogelt, finde aber nichts passendes.

Ich brauch ein Script, das mir alle User aus der CSV automatisch mit Homeverzeichnis und der /bin/false anlegt.

Mittlerweile habe ich das auch lösen können via Webmin. Doch ich hätte das gerne via Shell gelöst, da man ja etwas dazu lernen möchte.

Ich war auch schon soweit, dass ich den Befehl für alle User angezeigt bekomme. Es fehlt hier noch die Zuweisung der /bin/false und ein weiteres Problem ist, dass sich Linux mit den Passwörtern verschluckt, da in diesen Sonderzeichen enthalten sind.

while read a; do awk -F';' '{printf "useradd -m -p %s %s\n", $1, $2}'; done < /Pfad/Datei.csv

Vielleicht hat mir noch jemand einen Tipp.

Gruß Speedy
Member: Clijsters
Clijsters Feb 18, 2014 at 14:35:10 (UTC)
Goto Top
Hallo Speedy,
Zitat von @speedy-luis:
while read a; do awk -F';' '{printf "useradd -m -p %s %s\n", $1, $2}'; done < /Pfad/Datei.csv
Vielleicht hat mir noch jemand einen Tipp.
könntest du soetwas meinen?
#!/bin/bash
USERFILE=/Pfad/Datei.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "Datei $USERFILE nicht vorhanden."; exit 99; }  

while read name passwort
do
     adduser name --shell /bin/bash
     echo passwort | passwd uname --stdin
done < $INPUT

IFS=$OLDIFS
Ich bin leider kein Shell-Guru. Man versucht aber dennoch gerne zu helfen, wo man könnte.
Ist also ungetestet, könnte aber was werden.

Inwiefern verschluckt sich Linux mit den Sonderzeichen?


Grüße
Dominique
Member: speedy-luis
speedy-luis Feb 24, 2014 at 13:16:38 (UTC)
Goto Top
Hallo,

auch dieses Script hilft mir nicht weiter...

Ich konnte die User jedoch via Webmin importieren.

Gruß