staging.inyokaproject.org

Benutzer aus einer CSV per Shell anlegen

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 16.04 (Xenial Xerus)
Antworten |

Patejoker

Anmeldungsdatum:
6. Januar 2017

Beiträge: Zähle...

Hallo ihr lieben , ich bin noch komplett neu hier und habe gleich eine Übungsaufgabe erhalten woe ich nicht weiter komm ☹

Also die Aufgaben stellung ist folgende Es sollen per Shellscript Benutzer angelegt werden welche vorher in einer CSV Datei eingetragen wurden.

Ich habe mich mal ein wenig versucht einzulesen und habe diverse Sachen gefunden die ich benutzen kann nur alles zusammen zu bekommen, das ist das Problem ☹

Es stehen folgende Informationen in der CSV:

Vorname, Nachname, Email, Benutzername, Primäre Gruppe, Sekundäre Gruppe, Shell, Passwort

z.B.

Max,Mustermann,Mustermann@musterweg.de,maxmus,Gruppe1,linux,bin/bash,p@ssw0rt

Jetzt kommt dazu das der Benutzer nach der ersten Anmeldung sein Passwort selbständig änder muss.

Das würde ja eigentlich mit :

1
passwd -e $username

passieren denke ich mal

Sprich ich lege den Benutzer per adduser befehl an.

Nun mein Problem ich habe keine Ahnung wie ich das ganze Umsetzen soll, da es leider nicht nur Benutzer und Passwort ist sondern ebend auch weitere Informationen gefragt sind.

Eventuell hat jemand ja mal nen paar Minuten (oder Stunden 😀 ) zeit und könnte mir da mal helfen.

Ausser das ich das ganze mit #!/bin/bash anfange und meine Schritte dann mit # erklären muss weiss ich nix ☹

Jetzt nicht gleich rum meckern aber wenn ich nen Code hätte wäre es eventuell so hoffe ich einfach zu verstehen für mich, was man wo wie und weshalb macht.

Naja soweit so gut.

Schönen Freitag euch noch.

Bearbeitet von rklm:

Formatierung angepasst. Bitte schau mal Forum/Syntax an.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Patejoker schrieb:

Hallo ihr lieben , ich bin noch komplett neu hier und habe gleich eine Übungsaufgabe erhalten woe ich nicht weiter komm ☹

Herzlich willkommen hier im Forum und auf dem Portal!

Nun mein Problem ich habe keine Ahnung wie ich das ganze Umsetzen soll, da es leider nicht nur Benutzer und Passwort ist sondern ebend auch weitere Informationen gefragt sind.

Eventuell hat jemand ja mal nen paar Minuten (oder Stunden 😀 ) zeit und könnte mir da mal helfen.

Ausser das ich das ganze mit #!/bin/bash anfange und meine Schritte dann mit # erklären muss weiss ich nix ☹

Da empfiehlt sich die Lektüre vom Bash-Skripting-Guide für Anfänger. ☺

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Zunächst solltest du dich grundlegend mit bash-Scripting befassen, als Einstiegsdroge gibt es hier Shell/Bash-Skripting-Guide für Anfänger.

Zu deiner Anfrage:

  • Weißt du, wie du mit manueller Eingabe einen solchen Nutzer anlegst?

  • Wenn du dann einen weiteren Benutzer manuell anlegst, welche Teile ändern sich im Vergleich zu den vorherigen Befehlen?

    • Dies sind deine Variablen, die du per Script aus der CSV füllen musst.

  • Welchen Missbrauch können falsche Einträge in der CSV bewirken, wenn dort anstatt korrekten Angaben z.B. rm oder eine Umleitung: verwendet wird? Wie kannst du das abfangen?

Wenn du das alles hast, kannst du dein erstes Script zusammenzimmern und mit "echo" die fertigen Befehlszeilen ausgeben und auf Fehler prüfen.

Viel Erfolg!

Patejoker

(Themenstarter)

Anmeldungsdatum:
6. Januar 2017

Beiträge: 2

Danke für die Antworten ich habe das ganze bis jetzt so umgesetzt:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
#!/bin/bash

# Debug - true = debug on - false = debug off

debugcheck=true

logname=$(logname)

# Ort der CSV Datei
directory_name="Schreibtisch/Myscript"
#directory_name="input"
input_path="/home/$logname/$directory_name"

# Eingabefeld für die Datei
echo "Kopieren Sie die Datei nach: $input_path"
echo "Geben Sie den Dateinamen ohne die Endung [.csv] ein und drücken Sie [ENTER]."
read dateiname


#csv_input_datei = "$input_path/bbqdata.csv"
if [[ $debugcheck = true ]]; then
	echo "##### DEBUG input datei"
fi


# Deklarieren Sie den Dateipfad & Namen
csv_input_datei="$input_path/$dateiname.csv"


if [[ $debugcheck = true ]]; then
	echo "##### DEBUG input datei eingelesen"
fi


while read datei; do


	if [[ $debugcheck = true ]]; then
		echo "##### DEBUG in der schleife "
	fi


	# Die Variablen erhalten
	firstname="$datei | cut -d, -f1"
	name="$datei | cut -d, -f2"
	email="$datei | cut -d, -f3"
	username="$datei | cut -d, -f4"
	pgroup="$datei | cut -d, -f5"
	sgroup="$datei | cut -d, -f6"
	shell="$datei | cut -d, -f7"
	password="$datei | cut -d, -f8"
	info="$firstname $name $email"

	# Die Variablen für den Gruppen Check
	pgcheck="grep ^$pgroup < /etc/group | cut -d: -f1"
	sgcheck="grep ^$sgroup < /etc/group | cut -d: -f1"


	# Prüfen ob es die erste Gruppe gibt
	if [[ $debugcheck = true ]]; then
		echo "##### DEBUG Erste Gruppe Check "
	fi

	if [ "$pgcheck"="$pgroup" ]
	then 
		echo "Die Gruppe $pgroup existiert bereits"
	else 
		groupadd -f $pgroup
	fi


	# Prüfen ob es die zweite Gruppe gibt
	if [[ $debugcheck = true ]]; then
		echo "##### DEBUG Zweite Gruppe Check "
	fi

	if [ "$sgcheck"="$sgroup" ]
	then 
		echo "Die Gruppe $sgroup existiert bereits"
	else 
		groupadd -f $sgroup
	fi


	if [ groupadd -d /home/$pgroup ]
	then
		echo "Primäres Gruppenverzeichnis existiert bereits."
	else
		mkdir -p /home/$pgroup
	fi
#Benutzer wird angelegt
	useradd -c $info -d "/home/$pgroup/$username" -m $username -g $pgroup -G $sgroup -s $shell $password &&	
	#Benutzer muss nach ersten Anmeldung sein Passwort ändern
	passwd -e $username
	echo "$username wurde erstellt."

	if [[ $debugcheck = true ]]; then
		echo "##### DEBUG Schleife durchgelaufen "
	fi

done < $csv_input_datei
echo
    read -p "Vielen Dank für die Benutzung des Shell Scriptes" g
    clear

Die Frage ist nur ob es noch schöner geht ?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Hi Patejoker,

auch von mir erstmal ein herzliches Willkommen hier !

Patejoker schrieb:

...

Die Frage ist nur ob es noch schöner geht ?

Ja, geht es.

Schau Dir mal readarray an, und wie man mit Arrays umgeht.
(mehr verrate ich mal nicht, es ist ja schließlich Deine Übungsaufgabe ... 😉 )

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Patejoker schrieb:

Danke für die Antworten ich habe das ganze bis jetzt so umgesetzt:

Zeile 77 hat ein Problem! Schau mal:

1
2
3
4
$ if [ a=b ]; then echo ja; else echo nein; fi
ja
$ if [ a = b ]; then echo ja; else echo nein; fi
nein

Die Frage ist nur ob es noch schöner geht ?

Ja. Siehe den Hinweis von track.

Antworten |