1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

perl/gtk2 Skript IO-Problem

    • Frage
  • davewood
  • 23. Februar 2007 um 15:22
  • Unerledigt
  • davewood
    17
    davewood
    Mitglied
    Reaktionen
    9
    Punkte
    3.204
    Beiträge
    536
    • 23. Februar 2007 um 15:22
    • #1

    Versuchs nun schon seit ein paar Stunden aber komm nicht weiter.

    Mein Perl Skript erzeugt ein Fenster mit User/PW Eingabefeldern.

    Dann gibts nen "Connect" Button, wenn der gedrückt wird soll per sshfs ein Verzeichnis gemountet werden.

    sshfs user@host:/verzeichnis /mnt/verzeichnis

    Usernamen und Password hab ich in den Variablen $usr und $pw gespeichert.
    Nach dem Aufruf von sshfs fragt er in der Shell nach dem PW, ich will aber aus dem Perl Skript das PW übergeben. Auch die PW Eingabeaufforderung will ich im Shell Skript verarbeiten. Hab mich ein wenig mit IPC::Open2 gespielt aber das will nicht so wie ich will. >> http://search.cpan.org/~nwclark/perl-5.8.8/lib/IPC/Open2.pm

    Kann wer helfen? :)

    danke

    david

    Code
    !/usr/bin/perl -w
    
    
    use strict;
    use Glib qw/TRUE FALSE/;
    use Gtk2;
    use IPC::Open2;
    
    
    my $window;
    my $frame;
    my $box;
    my $hbox_usr;
    my $hbox_pw;
    my $hbox_btn;
    my $label_usr;
    my $label_pw;
    my $entry_usr;
    my $entry_pw;
    my $btn_connect;
    my $btn_exit;
    my $info;
    
    
    Gtk2->init();
    
    
    sub connect() {
            my ($widget, $window) = @_;
            [b]my $usr = $entry_usr->get_text();
            my $pw = $entry_pw->get_text();
            my $pid = open2(\*CHLD_OUT, \*CHLD_IN, "sshfs $usr\@nfsserver.g2:/g2/bildarchiv /mnt/global2000/bildarchiv");
            while (<CHLD_OUT>) {
                    $info->get_buffer()->insert_at_cursor("$_");
            }
            print CHLD_IN "$pw";[/b]
    }
    
    
    #delete event occurred
    sub delete_event() {
            return FALSE;
    }
    #create main window
    $window = Gtk2::Window->new('toplevel');
    $window->set_title("Connect");
    $window->signal_connect(delete_event => \&delete_event);
    $window->signal_connect(destroy => sub { Gtk2->main_quit(); });
    
    
    # create containers
    $frame = Gtk2::Frame->new ("Mount");
    $frame->set_border_width(4);
    $box = Gtk2::VBox->new();
    $hbox_usr = Gtk2::HBox->new();
    $hbox_pw = Gtk2::HBox->new();
    $hbox_btn = Gtk2::HBox->new();
    $hbox_btn->set_homogeneous(TRUE);
    
    
    # create connect button
    $btn_connect = Gtk2::Button->new_from_stock('gtk-ok');
    $btn_connect->signal_connect(clicked => \&connect, $window);
    # create exit button
    $btn_exit = Gtk2::Button->new_from_stock('gtk-cancel');
    $btn_exit->signal_connect(clicked => sub { Gtk2->main_quit(); });
    
    
    # create labels
    $label_usr = Gtk2::Label->new("Username");
    $label_pw = Gtk2::Label->new("Password");
    
    
    # create textfields
    $entry_usr = Gtk2::Entry->new();
    $entry_pw = Gtk2::Entry->new();
    $entry_pw->set_visibility(FALSE);
    $info = Gtk2::TextView->new();
    $info->set_editable(FALSE);
    $info->set_border_width(2);
    
    
    # add widgets to main window
    $hbox_usr->pack_start($label_usr, TRUE, TRUE, 5);
    $hbox_usr->pack_start($entry_usr, FALSE, TRUE, 5);
    $hbox_pw->pack_start($label_pw, TRUE, TRUE, 5);
    $hbox_pw->pack_start($entry_pw, FALSE, TRUE, 5);
    $hbox_btn->pack_start($btn_connect, FALSE, TRUE, 5);
    $hbox_btn->pack_start($btn_exit, FALSE, TRUE, 5);
    $box->add($hbox_usr);
    $box->add($hbox_pw);
    $box->add($hbox_btn);
    $box->add($info);
    $frame->add($box);
    $window->add($frame);
    
    
    # show all widgets
    $window->show_all();
    
    
    # start Gtk2 main event loop
    Gtk2->main();
    
    
    exit 0;
    Alles anzeigen

    I like Toast!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung