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