telnet Befehle auf fremdes System -> Rückgabewert nicht korrekt

Begonnen von AndreR, 15 Oktober 2013, 15:47:44

Vorheriges Thema - Nächstes Thema

AndreR

Hallo,

ich arbeite mich gerade in die 99_myUtils.pm ein. Mein FHEM läuft auf einem Windows 2012 Server und soll vorerst auch nicht umgezogen werden.
Dazu habe ich aktuell eine Fritzbox 7270 und ich habe möchte folgendes realisieren:

ich möchte Telnet Befehle auf der Box ausführen und die Rückgabewerte auswerten. Dazu habe ich mir mal ein einfaches Beispiel gestrickt:
(ich habe mich an einem Beispiel hier im Forum orientiert, der Code ist bisher nur minimal angepasst)
my ($ip,$user,$password,$cmd) = @_; #Wenn User und PW erforderlich

my $ret = 0;
my $cmdline = "/usr/bin/ctlmgr_ctl r landevice settings/landevice10/active";

use Net::Telnet;
my $telnet = new Net::Telnet ( Timeout=>15, Errmode=>'die');
$telnet->open("192.168.1.1");
$telnet->waitfor('/fritz.fonwlan.box login: $/i'); #Wenn User und PW erforderlich
$telnet->print($user); #Wenn User und PW erforderlich
$telnet->waitfor('/Password: $/i');
$telnet->print($password);
$telnet->waitfor('/# $/i');
$ret = $telnet->cmd($cmdline);
$telnet->print('exit');
Log 3, "FB_Telnet_test -> $ret -> $cmdline";
if ($ret == 1) { fhem "set dummydevice on"; }else{ fhem "set dummydevice off"; }
}


Das funktioniert soweit ganz gut, ich lasse mir mitloggen, welcher Rückgabewert kommt und mittels welchem Befehl.
Aber:
führe ich den Code auf der Box aus (also das $cmdline), kriege ich als Antwort: 0, während $ret immer 1 ist...
Und ich steh wohl auf dem Schlauch, ich finde nämlich den Grund nicht :(

Danke für die Hilfe vorab :)
FHEM auf Raspberry Pi
CUL868
diverse FS20 Aktoren, Somfy Markisensteuerung

betateilchen

Du hast die Doku zu Net::Telnet nicht gelesen, stimmts?

ZitatIn a scalar context, the characters read from the remote side are discarded and 1 is returned on success.

probier mal mit:


Deklaration:
my @ret;

Anwendung:
@ret = $telnet->cmd($cmdline);

Auswertung:
if ($ret[0] == 1)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AndreR

Hi

das war der Grund :)
Vielen Dank, funktioniert jetzt einwandfrei
FHEM auf Raspberry Pi
CUL868
diverse FS20 Aktoren, Somfy Markisensteuerung