PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl/Tk: return value soll inhalt eines Entry sein



ThorstenHirsch
31-07-2004, 20:46
Servus!

Ich brauch ein winziges Programm, das ein Passwort abfragt, allerdings graphisch. Natürlich sollen nur Sternchen zu sehen sein. So sieht's bis jetzt aus:

#!/usr/bin/perl
# no license, no warranty, do whatever you like
# (c) Thorsten Hirsch 2004

use strict;
use Tk;

my $meinFenster = MainWindow->new();
$meinFenster->configure(-title=>'Passwortabfrage');
$meinFenster->geometry('+500+300');

my $beschriftung = $meinFenster->Label( -text=>"Passwort eingeben:")->pack();
my $eingabe = $meinFenster->Entry(-show=>'*',-width=>30)->pack();

$eingabe->bind('<Return>'=>sub{my $ausgabe=$eingabe->get(); $meinFenster->destroy; exit($ausgabe)});
$eingabe->focus;

MainLoop();
Leider klappt das mit return noch nicht so. Was mach ich falsch?
Der return-Wert soll das sein, was ich eingegeben habe, damit ich es in der Kommandozeile weiterverwenden kann (zum mounten einer mit Passwort verschlüsselten Partition).

Gruß,
Thorsten

edit: Falls jemand schon so ein Programm hat/kennt (kann auch GTK oder Qt oder oder oder sein), bitte schreiben!

fork
01-08-2004, 00:31
Du gibst das Passwort als Exitstatus zurueck; das ist so nicht vorgesehen da der Exitstatus nur eine Programmstatusinformation ist und von Haus aus ein relativ kleiner ganzzahliger Wert.

Gib das Passwort einfach aus. Also statt:


exit($ausgabe)

so:


print($ausgabe)

Im uebergeordneten Shellscript:


PASS=$(askpass.pl)

Das Passwort wird nicht angezeigt sondern nur in die Variable PASS geschrieben.

ThorstenHirsch
01-08-2004, 14:13
Danke, das klappt...mehr oder weniger.
Also ein 'echo $(getPassword.pl)' und ein 'echo `getPassword.pl`' liefern mir beide das Passwort. Aber ein 'mount /mnt/crypt -p $(getPassword.pl)' oder auch ein 'mount /mnt/crypt -p `getPassword.pl`' sagen mir beide, dass das Passwort mind. 20 Zeichen lang sein muss, was es ja auch ist, aber scheinbar kommt's nicht an. :(

Noch ne Idee?

ThorstenHirsch
01-08-2004, 14:29
Ich glaube das liegt an mount, denn was mich vorhin schon verwundert hat: ich musste nochmal return drücken bevor die Meldung kam, dass das Passwort nicht lang genug ist. Also schein mount wohl das Passwort nicht bekommen zu haben, sondern noch darauf zu warten.

man mount bringt mir folgendes zu Passwörtern:

-p passwdfd
If the mount requires a passphrase to be entered, read it from
file descriptor passwdfd instead of from the terminal.

Tjo...was ist denn nun ein "file descriptor"? Wie bring ich das mit meiner Passwortabfrage zusammen?

ThorstenHirsch
01-08-2004, 14:57
Also ja, es liegt definitiv an mount, denn mein Passwort wird nicht angenommen, egal ob ich 'mount -p meinpasswort' verwende oder ob ich 'mount -o password=meinpasswort' versuche.

Ich mach dazu mal nen Thread in den linuxforen auf.

ThorstenHirsch
01-08-2004, 15:19
So, ich hab's:

/usr/local/bin/getPassword.pl | mount /mnt/crypt -p 0
ist die Lösung :)

bash_azubi
02-08-2004, 09:32
würdest du bitte auch deine komplette Lösung mal inkl. dem Anlegen der Partition posten?
Das hört sich sehr interessant an :)

fork
02-08-2004, 15:16
Such mal bei linuxforen.de oder bei google nach den Begriffen "loop" und "aes", da dürftest du fündig werden. prolinux.de hat auch eine Anleitung darüber.

ThorstenHirsch
02-08-2004, 18:11
http://www.linuxforen.de/forums/showthread.php?t=125190

Da ist auch ein Link in meinem ersten Posting zu einem HowTo.

bash_azubi
03-08-2004, 07:37
danke dir :)