Hallo, wie kann man aus einem Perl-Skript ein anderes Programm oder Skript (nicht Perl) aufrufen? Danke und Gruss Daniel --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Wed, Nov 29, 2000 at 15:21 +0100, Daniel Heemann wrote:
wie kann man aus einem Perl-Skript ein anderes Programm oder Skript (nicht Perl) aufrufen?
ystem("programm parameter"); ystem("programm", "parameter"); $ausgabe = `programm parameter`; Backticks, neben dem ß gepiped öffnen? z.B.: open(SM, "|/usr/bin/sendmail -oi -t -odq"); print SM "From: ...\n"; print SM "To: ...\n"; print SM "Subject: ...\n"; print SM "Text\n"; close SM; -- Marco Dieckhoff icq# 22243433 PGP key 9EFA D64F 5DAA D36B E0E7 CE1B 9E1B 4903 0C51 1632 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Marco Dieckhoff schrieb:
On Wed, Nov 29, 2000 at 15:21 +0100, Daniel Heemann wrote:
wie kann man aus einem Perl-Skript ein anderes Programm oder Skript (nicht Perl) aufrufen?
system("programm parameter");
oltle man nicht tun, da Perl bei einem system aufruf mit nur einem Parameter diesen auf shellmetacharaktere prüft und falls vorhanden den gesamten String als Befehl an die shell zurückgibt.
system("programm", "parameter");
ist besser, da hier nur der string "programm" an die shell übergeben und ausgeführt wird, der Rest wird als Parameter zu "programm" übergeben.
$ausgabe = `programm parameter`; Backticks, neben dem ß
auch hier wird der string innerhalb der backticks komplett an die shell übergeben und dass skript ist angreifbar. Fazit: system("programm parameter"); sollte man sich besser erst gar nciht angewöhnen system("programm", "parameter"); verinngert schonmal die angreifende Fläche `programm parameter`; sollte man auch mit keiner irgendwie gearteten Form von user input verbinden. Generell ist zu sagen wenn man ein Perl-skript schreibt dass halbwegs sicher sein soll, sollte man die Kombination User-Input & Shell meiden wie die Pest. Und falls sie doch nötig sein sollte den UserInput lieber dreimal checken ob er korrekt ist. hth Daniel "Fengor" Brachmann --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Daniel Brachmann schrieb in 1,5K (49 Zeilen):
system("programm parameter"); sollte man sich besser erst gar nciht angewöhnen [weil es so an die Shell gegeben wird]
- Kein Problem bei z.B. system ("echo Ich bin doch nicht bloed"); (Programm und Parameter fest vorgegeben oder aus sicherer Liste ausgewaehlt.) - Sonst sowieso -T verwenden. perldoc perlsec.
Generell ist zu sagen wenn man ein Perl-skript schreibt dass halbwegs sicher sein soll, sollte man die Kombination User-Input & Shell meiden wie die Pest. Und falls sie doch nötig sein sollte den UserInput lieber dreimal checken ob er korrekt ist.
-T -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (4)
-
9d@cosmosdirekt.de
-
daniel.heemann@gmx.de
-
linux@jwr.de
-
weissel@netcologne.de