Freetz und Perl - Problemchen mit microperl

marte

Neuer User
Mitglied seit
15 Mrz 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hi,

(doch, es geht um Freetz; nur anfangen muss ich mit etwas Background...)

Ich betreibe derzeit fhem auf 'ner 7170 und nutze dazu das Perl, welches auf der fhem-Webseite zum download für die FB angeboten wird. Um eine Soundbridge anzusteuern, möchte ich Net::Telnet benutzen, was fhem jedoch komplett killt, wenn die SB abgeschaltet ist. Zurückführen konnte ich das auf folgende Problematik:

Code:
$SIG{'ALRM'} = sub { die('und tschuess') };
alarm($timeout);
alarm 2;
sleep 4;

liefert mir

/var/media/ftp/uStor01/external # ./pl_test_alarm.pl
Alarm clock

=> Perl springt also nach Ablauf der Zeit nicht in $SIG{'ALRM'}, sondern macht irgend etwas Komisches und stirbt.


Frage 1: Kann das an dem (noch) original AVM-Kernel liegen oder liegts eher an perl?
Frage 2: Hat noch jemand 'ne FB 7170 mit Perl und kann das mal testen?


Weiter im Text: Um das mit dem Perl zu testen, habe ich mir schnell mal microperl mittels freetz gebastelt. Da kommt jetzt aber

/var/media/ftp/uStor01/external # ./microperl pl_test_alarm.pl
The alarm function is unimplemented at pl_test_alarm.pl line 9.

Weiterhin funktioniert Net::Telnet sowieso nicht, weil dieses Socket.pm braucht, was wiederum XSLoader braucht. Und genau der geht mit microperl ja nun nicht.


Frage 3: Ist es möglich, mittels freetz nicht nur microperl sondern voll-und-ganz-perl zu bauen? Hat das schon mal jemand gemacht ohne dabei total durchzudrehen?


Bin über jeden Tipp dankbar. Derzeit gehe ich einen Umweg über use Net::ping, um erst zu schauen, ob die Ziel-IP da ist und dann Net::Telnet zu nutzen. Toll oder elegant ist die Lösung aber sicherlich nicht...

marte
 
Das klingt, als hättest Du bereits ein normales Perl auf der Box laufen. Wozu willst Du dann noch eines mit Freetz erstellen?

Das Problem sollte nicht am Kernel liegen, wobei Du das bei der 7170 ausprobieren kannst.

Du kannst versuchen, auf das ALRM komplett zu verzichten. Bei mir dauert es ca. 3 Sekunden, bis ein Telnet-Aufruf zu einer nicht existierenden Adresse zu einen Timeout führt. Das sollte zu verkraften sein.
 
Ja, es läuft ein "normales" Perl. Halt nur nicht so, wie es sollte (siehe oben). Net::Telnet nutzt für genau diesen Timeout die ALRM-Funktion, so dass mir halt alles abrauscht, sobald er ins Timeout kommt.

Ich werde es wohl erst mal mit einem neuen Kernel probieren, dann mir einen an dem Versuch abbrechen, Perl komplett zu bauen. Oder ich bleib einfach bei einem derzeitigen Ping-Workaround. Mal sehen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.