#1 18. März 2008 hi leute muss ich ein kleines script basteln, dass jedoch nicht 100% klappt -.- 1. beim user erfassen, öffne ich das file bevor ich die gruppe/pw einlese kann ich so zwar prüfen ob die datei vorhanden ist, aber offenbar erstellt es mir danach pro $login ebenfalls eine gruppe :/ 2. linux erkennt beim 'system (useradd..);' den command -c, -g und -d nicht, an was kann das liegen? wenn ich den kompletten cmd von hand eintippe funzt es einwandfrei. der user wird danach zwar erfolgreich erstellt, jedoch ohne meine zusätzlichen variablen hoffe mir kann einer von euch helfen..bin langsam am verzweifeln ^^ PS: bin nich der mega profi Spoiler Code: $home = /home/; #------ #Main | #------ print "|------------------------------------------------|\n"; print "| Dieses Script erstellt Benutzer |\n"; print "| aus einer ASCII-Datei (vornamenachname;login) |\n"; print "|------------------------------------------------|\n"; print "|[1] Benutzer erfassen [3] Script beenden |\n"; print "|[2] Benutzer loeschen |\n"; print "|------------------------------------------------|\n"; print "Eingabe: "; $type = <STDIN>; #------------------- #Benutzer erfassen | #------------------- if ($type == 1) { print "Bitte geben Sie den Pfad und Dateinamen der Quelldatei ein: "; $file = <STDIN>; open(userinput, "<$file")or die "Fehler: $!\n"; print "Gruppenname: "; $grp = <STDIN>; print "Passwort: "; $pw = <STDIN>; system(groupadd $input_grp); while (<userinput>) { $zeile = $_; @split = split(/;/,$zeile); $name = @split[0]; $login = @split[1]; system(useradd -g $grp -c $name -d $home.$login -p $pw $login)or die "Fehler: $!\n"; print "Benutzer $name wurde mit dem Login $login"; print "und dem Passwort $pw in die Gruppe $grp"; print "erfolgreich aufgenommen!\n"; }#while close(userinput); } + Multi-Zitat Zitieren
#2 18. März 2008 AW: [perl] "Userverwaltung" EVT einfach die Gänsefüsschen? also system("...") statt system(...) + Multi-Zitat Zitieren
#3 18. März 2008 AW: [perl] "Userverwaltung" leider nein danke für die erste antwot + Multi-Zitat Zitieren
#4 19. März 2008 AW: [perl] "Userverwaltung" Ich würde sagen, du hast ein "\n" nach der eingabe mit drin. mach ein chomp($eingabe); nach jeder Eingabe des Users, dann wird es funktionieren Beispielsweise Code: $file = <STDIN>; chomp($file); GreetZ, ~Br4inP4in~ + Multi-Zitat Zitieren
#5 19. März 2008 AW: [perl] "Userverwaltung" hab inzwischen noch bisschen ausbessern können das eine war wie du gesagt hast wegen den \n und mit chomp (eingabe per STDIN) konnte ichs lösen.. jedoch hab ich zum ganzen noch keine lösung gefunden, werde wahrscheinlich auf zwei einzelne mini scripts umsteigen..so hats funktioniert -.- aber kP warum danke für die "kleine" unterstützung + Multi-Zitat Zitieren
#6 19. März 2008 AW: [perl] "Userverwaltung" Übrigens: du brauchst die datei nicht öffnen, bevor du die daten einliest. Du kannst mit Code: if (-e $file) {} prüfen, ob die datei existiert. GreetZ, ~Br4inP4in~ Edit: setze mal in der ersten Zeile /home/ in einfache Anführungszeichen. Gut möglich, dass er durch die "/", die normal einen regulären Ausdruck markieren aus "/home/" einfach nur "home" macht. Übrigens wäre es emfehlenswert, strict und warnings zu benutzen, damit würdest du codingfehler besser erkennen... + Multi-Zitat Zitieren
#7 19. März 2008 AW: [perl] "Userverwaltung" die file prüfung hab ich so im nachhinein auch schon eingebaut, danke der pfad wird richtig eingelesen und auch weiterverarbeitet, von daher danke für den tipp..aber nicht wirklich hilfreich hab noch nicht die grosse erfahrung mit perl, daher nicht zu viel von mir verlangen ^^ hab noch ein bisschen mit stdout getestet und so werden mir eigentlich alle angaben korrekt ausgegeben beim "useradden"..jedoch wird es danach nicht korrekt durchgeführt.. aktueller stand: user mit erstellt, gruppe wird erstellt, jedoch wird pro user eine weitere gruppe erstellt -> liegt wahrscheinlich an meiner while schlaufe :/ wen ich mit "-d $home.$login" das homedir des users definieren will erstellt es mir schlussendlich kein neues verzeichnis..mit "-m" sollte dies eigentlich geschehen, jedoch gibt er mir dann den fehler dass es den "-m" command nicht geben würde -.- nun isses nich mehr wirklich wichtig, da ich es anders gelöst habe -> erfassen 1 script und löschen 1 script + Multi-Zitat Zitieren
#8 19. März 2008 AW: [perl] "Userverwaltung" Hm ja, könnte auch dran gelegen haben, dass eine leerzeile in $file war... Aber es wundert mich, dass es funktioniert, wenn du 2 Scripts nutzt, die Inhaltlich mit dem hier geposteten code übereinstimmen... Naja, wie gesagt, um Codingfehlern vorzubeugen und sauber zu coden solltest du immer strict und warnings benutzen. Das ist vor allem bei größeren Scripts absolut emfpehlenswert (eigentlich immer). strict & warnings, falls du nichts damit anzufangen weisst GreetZ, ~Br4inP4in~ + Multi-Zitat Zitieren
#9 19. März 2008 AW: [perl] "Userverwaltung" joa, darum frag ich mich ja auch warum es so nicht klappt :/ habs bei den beiden einzelnen direkt per eingabe mit <ARGV[0]> etc. eingelesen, ansonsten etwa gleich aufgebaut und es klappt... naja is ja egal..so klappts nun danke für den link, werd ich mir mal unter die lupe nehmen + Multi-Zitat Zitieren