[perl] "Userverwaltung"

Dieses Thema im Forum "Webentwicklung" wurde erstellt von s0n!X, 18. März 2008 .

Schlagworte:
  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);
    }
    
     
  2. 18. März 2008
    AW: [perl] "Userverwaltung"

    EVT einfach die Gänsefüsschen? also system("...") statt system(...)
     
  3. 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~
     
  4. 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
     
  5. 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...
     
  6. 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
     
  7. 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~
     
  8. 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
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.