Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Irgendwas neben STDOUT usw?

  1. #1
    Tripex
    Gast

    [BASH in PERL]Ausgabeumleitung - advanced

    HI

    gibt es irgendetwas anderes neben dem normalen STDIN, STDOUT oder STDERR?
    In der bash.

    Code:
    my $pass = <passwort>;                                #wird eingegeben
    my $new_pass = <neues passwort>;                #wird eingegeben
    my $new_pass_ver = <passwort verifizierung>;  #wird eingegeben
    
    my @out = `/usr/bin/passwd <<EOF\n$pass\n$new_pass\n$new_pass_ver\nEOF`;
    
    #... Ab hier erfolgt die verarbeitung des ausgegeben
    Das Problem ist nun, dass das Array '@out' leer bleibt.
    Jegliche umlenkung des Befehles mit > 1,2 oder & führt zu nichts(sprich der Output des Befehls wird stehts in der Shell angezeigt, sobald das perl script gestartet wird) und ein umlenken in eine Datei, führt ausschließlich zu der erzeugung einer leeren Datei.

    Bin schon regelrecht am verzweifeln und ich habe keinerlei Ahnung wie ich den output:
    - Nicht ausgegeben bekomme, sprich versteckt ausführe
    - in eine Variable bekomme

    Hoffe das ich hier bei euch an der richtigen Stelle bin und wir zusammen eine Lösung finden können.

    Beste Grüße,
    TripeX
    Geändert von Tripex (19-10-2007 um 18:16 Uhr) Grund: treffenderererer Titel

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von Tripex Beitrag anzeigen
    Es handelt sich hier um ein PERL-Script, mit dem das Passwort eines Users geändert werden soll.
    Es soll das Programm passwd ersetzen und enthält leichte modifikationen.
    Was genau will Dein Skript denn mit dem Paßwort???
    Vielleicht sollte der Threadtitel besser geändert werden in ``wie kann ich das Paßwort eines anderen Nutzers abfragen´´...
    Wat gut, daß sich passwd nicht so einfach beschubsen lässt.
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Tripex
    Gast
    hmmm

    Sonst noch konstruktive Vorschläge?

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    ich habe die Source gerade nicht parat - aber passwd könnte auch direkt in das Terminal-Device schreiben.

    Jan

  5. #5
    Registrierter Benutzer Avatar von anniyka
    Registriert seit
    18.10.2007
    Ort
    Nürnberg
    Beiträge
    11
    dafuer brauchst du expect

    gruss,
    anniy
    I'm your Administress, appreciate me ....

  6. #6
    Tripex
    Gast
    Ich weiß

    Gibt es denn keine andere Möglichkeit?

  7. #7
    Registrierter Benutzer Avatar von anniyka
    Registriert seit
    18.10.2007
    Ort
    Nürnberg
    Beiträge
    11
    Ja: empty

    http://empty.sourceforge.net/

    Das Problem ist, dass passwd und Konsorten nicht von STDIN sondern von einem TTY oder PTY lesen. Du kannst hoechstens noch mit named pipes ein wenig rumexperimentieren, aber ich weiss nicht wie weit Du damit kommst.

    gruss,
    anniy
    I'm your Administress, appreciate me ....

  8. #8
    Tripex
    Gast
    hi Anniyka,

    danke für deine Mühe!

    Ich seh schon, dass ich um Expect und Co. nich herum kommen werde.

    Is dann schließlich doch die bessere Lösung, wenn ich meine Arbeit mit Perl lösen möchte.

    Habe zu dem noch das Modul Net::SSH::Expect gefunden.
    Im großen und ganzen ergänzen sich die beiden ja und bieten mir eine schönere Lösung.

    Danke nochmal.

    Gruß,
    Tripex

  9. #9
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von Tripex Beitrag anzeigen
    Gibt es denn keine andere Möglichkeit?
    Ha, mein /dev/brain hat noch was ausgespuckt (habe ich vor 7 Jahren mal benutzt): Es gibt noch chpasswd, das kann man u. a. mit HERE-Dokumenten füttern:
    Code:
    chpasswd 2>/dev/null <<!
    ${user}:${pass}
    !
    Jan

    P.S.: Ich habe mir mal die Source zu passwd installiert. In meiner Version wird zum Einlesen des Passworts die (lt. Man-Page obsolete) Funktion getpass() benutzt, und die liest von /dev/tty.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •