Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12638[/thread]

Perl interaktiv auf die "Console" zugreifen

Leser: 1


<< >> 7 Einträge, 1 Seite
burnersk
 2008-10-14 19:22
#115518 #115518
User since
2008-03-25
83 Artikel
BenutzerIn
[default_avatar]
Hallo,

wie kann ich mit Perl Eingabeereignisse in der "Console" abfrangen?

Also wie folgt:
* Perl Script startet per &system() ein Kommandozeilentool
* wenn das Tool dann ein &read() macht soll mein Script das merken und was eingeben.

Als Beispiel OpenSSL (wenn man die --password usw. ignoriert). Wie kann das Script da das Passwort eingeben?

Nur wie mache ich das?
FoolAck
 2008-10-14 19:32
#115519 #115519
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Du willst Keyevents simulieren? Oder wie?

Quote
wie kann ich mit Perl Eingabeereignisse in der "Console" abfrangen?

Abfragen oder abfangen? Und was ist eine "Console", ein Terminal? Bist du eventuell unter windows?
Wenn das Passwort des OpenSSL-Dingens einfach von stdin gelesen wird und die shell, die dir unter dem "system"-Aufruf zur Verfügung gestellt wird es zulässt könntest du doch bestimmt einfach das Passwort nach stdin umleiten, oder geschickter: das Programm gleich als pipe (via open) öffnen und deinen Output direkt dahin schicken. Hm, klingt alles recht kompliziert, sollte es aber nicht.
Vielleicht hat ja jemand ne bessere Idee.

Dann noch unter diverses:
Quote
&system()

Lass am Besten das Ampersand weg.
burnersk
 2008-10-14 19:35
#115521 #115521
User since
2008-03-25
83 Artikel
BenutzerIn
[default_avatar]
FoolAck+2008-10-14 17:32:36--
Abfragen oder abfangen? Und was ist eine "Console", ein Terminal? Bist du eventuell unter windows?

Hauptsache ich kann die Zeile wo das STDIN Ereignis auftritt auch lesen um auch das richtige in die STDIN zu pusten.
Ja, Console/Terminal. Am Ende muss es unter win32/64 und unix/linux funktionieren

FoolAck+2008-10-14 17:32:36--
Dann noch unter diverses:
Quote
&system()

Lass am Besten das Ampersand weg.

Nur hier um eine Funktion hervorzuheben^^ mit dem Perl Highlighter macht er ja eine neue Zeile.
FoolAck
 2008-10-14 19:37
#115522 #115522
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Jo, hab ich früher auch gemacht. Aber das Ampersand ist afair deprecated und umgeht Prototypen. Mehr dazu in perldoc perlsub.
pq
 2008-10-14 20:06
#115524 #115524
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Code: (dl )
1
2
$ perl -wle'&system("ls")'
Undefined subroutine &main::system called at -e line 1.

bei builtins ist das ampersand nicht nur überflüssig und deprecated, sondern komplett falsch =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
MatthiasW
 2008-10-14 21:18
#115528 #115528
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Quote
Nur hier um eine Funktion hervorzuheben^^ mit dem Perl Highlighter macht er ja eine neue Zeile.

Um hier was hervorzuheben kannste [nop]...[/nop] verwenden ;)
Siehe dazu auch die Hilfe zu den Boardtags

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
Gast Gast
 2008-10-15 01:40
#115530 #115530
das einfachste:
Code (perl): (dl )
1
2
3
open( PIPE, " | $programm") or die $!;
print PIPE $passwort;
close(PIPE) or die $!;


oder du schaust dich auf cpan um, da gibt es einges. such mal nach "IPC"
<< >> 7 Einträge, 1 Seite



View all threads created 2008-10-14 19:22.