[gelöst] Python in Perl durch CGI

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

[gelöst] Python in Perl durch CGI

Beitrag von chroiss » 31.01.2007 13:24:35

Hi !

Kennt jemand von euch eine Möglichkeit in einem durch apache2 aufgerufenen Perl:CGI Script einen
System Aufruf auf Python durchzuführen ?

Auszug :

Code: Alles auswählen

if ($wer eq 'bla')
{
if ($query->param)
        {
my $txt=$query->param('eingabe');
my $wahl="192.168.101.198";
print "die eingabe war $txt und die auswahl $wahl
\n";
system("/usr/bin/sms  $wahl $txt");
        }
}

wobei /usr/bin/sms ein reines python script ist.
Welches CPAN Modul erlaubt mir das ???

Im Apache error.log steht folgendes :

Code: Alles auswählen

Traceback (most recent call last):, referer: http://****
File "/usr/bin/sms", line 11, in ?, referer: http://****
File "/usr/bin/sms", line 16, in SMSManager, referer: referer: http://*****
usw.

Auch mit dem Aufruf exec im Perlscript funktioniert es nicht...



gruss chroiss
Zuletzt geändert von chroiss am 01.02.2007 22:37:52, insgesamt 1-mal geändert.
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.01.2007 14:01:13

Hm, mehrere Dinge. Zum einen sollte der system-Aufruf so aussehen:

Code: Alles auswählen

system("/usr/bin/sms", $wahl, $txt);
Dann solltest du den Fehler, der da auftreten kann abfangen:

Code: Alles auswählen

system("/usr/bin/sms", $wahl, $txt)
  or die "Fehler beim Aufruf von /usr/bin/sms: $?\n";
Ansonsten sollte es da eigentlich keine Probleme geben.
Exec() ist definitiv falsch, denn damit beendest du dein Perl-Programm. Denke nicht, dass du das willst.
Im error.log muss auch noch mehr stehen. Das gepostete is ja nur der Tracebrack vom Python. Der eigentliche Fehler fehlt aber...

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Beitrag von chroiss » 31.01.2007 16:59:25

Ja da scheint wohl mehreres im Argen zu sein :
Fehlermeldung:

Code: Alles auswählen

[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] Traceback (most recent call last):, referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.]   File "/usr/bin/sms", line 11, in ?, referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.]     , referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] class SMSManager:, referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.]   File "/usr/bin/sms", line 16, in SMSManager, referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.]     , referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] config = os.environ['HOME']+'/.smsmngr', referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.]   File "/usr/lib/python2.3/UserDict.py", line 19, in __getitem__, referer: 
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.]     , referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] def __getitem__(self, key): return self.data[key], referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] KeyError, referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] : , referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] 'HOME', referer: http://localhost/test.cgi
[Wed Jan 31 16:47:01 2007] [error] [client 213.168.] , referer: http://localhost/test.cgi

Ausserdem funktioniert wohl ein Vergleich mit eq nicht, weiss nicht warum.

Script -->>Siehe Hier

Vielleicht hast Du eine Idee....

grüsse chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 01.02.2007 11:13:03

Also, der Code von NoPaste kann gar nie funktionieren. Da waren paar Fehler drin.
Hab das mal korrigiert: http://nopaste.debianforum.de/5012
Falls da nun Fehler auftreten bzw. was nicht klappt, wäre es nett, wenn du das genauer beschreiben würdest.

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Beitrag von chroiss » 01.02.2007 14:07:05

Danke für die Mühe...
Funktioniert aber auch nicht ....

Das Problem wird auch nicht das Perl Script an sich sein , sondern die Kommunikation zwischen dem System-Aufruf von Perl und dem Python Script.
Mit anderen Programmen (z.b smbclient etc. ) funktioniert der system aufruf ja .

Ich lass das mal so im Raum stehen. Und werde nicht drum herum kommen mir das Python script genauer anzukucken...


Danke und gruss chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Beitrag von chroiss » 01.02.2007 22:37:26

Jupp.

Und es lag am python Script....

Es fehlte ne os.environ['LANG'] Definition.

Da hätte nun auch wirklich keiner von Euch drauf kommen können.... :roll:

Danke Dir trotzdem Nepos....


gruss chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 02.02.2007 10:33:00

Ok, da is die Fehlermeldung von Python dann aber auch alles andere als Hilfreich ;)
Freut mich, dass du den Fehler gefunden hast :)

Antworten