An/Abwesenheit mit Kombination fhem auf CentOS und FritzBox7270

Begonnen von wkarl, 01 Januar 2013, 16:07:03

Vorheriges Thema - Nächstes Thema

wkarl

Hallo,
ich denke das was ich vorhabe passt hier am besten rein.

Auch ist dieses Projekt noch nicht abgeschlossen möchte aber die erste Phase schon dokumentieren und teilen.
Ziel ist es, von fhem auf CentOS die Anwesenheit meines iPhones über ssh & ctlmgl_ctl auf der FB zu ermitteln.

Die groben Phasen sind:

    ssh Server auf FritzBox 7270 bereitstellen
    ssh Kommunikation CentOS und FB via rsa-keys (ohne Passwort)
    Auswertung aus fhem heraus


    Aufsetzen ssh-Server auf FritzBox 7270 mit dropbear
    dropbear hier downloaden
http://www.antary.de/wp-content/uploads/2012/12/dropbear.zip
das Packet auspacken
bei mir wird dropbear von einem USB-Stick gestartet. Also alles dort in das Verzeichnis dropbear kopieren
mit telnet an der Fritzbox anmelden
in das Verzeichnis /var/media/ftp/<USB-Gerätename>/dropbear wechseln
mit ./dropbearkey -t rsa -f dropbear_host_rsa.key den rsa-host-Schlüssel generieren[/list]
ssh Kommunikation CentOS und FB via rsa-keys (ohne Passwort)
    nun auf dem CentOS (ist der ssh client) mit
ssh-keygen -t rsa die client-Schlüssel generieren (zu finden in ~/.ssh Verzeichnis)
die .pub Datei nun auf den USB-Stick an der FritzBox in das Verzeichnis dropbear kopieren
auf der FritzBox mit mkdir /var/tmp/.ssh das benötigte .ssh-Verzeichnis anlegen
auf der FritzBox im /var/media/ftp/<USB-Gerätename>/dropbear Verzeichnis mit cat *.pub >> /var/tmp/.ssh/authorized_keys den ssh-Client key bekannt machen
in der /etc/passwd des home-Verzeichnis von root auf /var/tmp setzen (hat mich Stunden gekostet dies herauszufinden)
nun dropbear mit /var/media/ftp/<USB-Gerätename>/dropbear/dropbear -s -r /var/media/ftp/<USB-Gerätename>/dropbear/dropbear_rsa_host.key starten. Die Option -s unterbindet, dass ein Passwort abgefragt wird.
auf dem CentOS ssh Client kann man sich nun mit ssh -2 -i ~/.ssh/id_rsa root@<FB-IP oder FB-DNS-Name> ohne Passwort verbinden
mit ssh -2 -i ~/.ssh/id_rsa root@<FB-IP oder FB-DNS-Name> '/usr/bin/ctlmgr_ctl r landevice settings/landevice2/active' kann nun z.B. der Status eines LAN-Gerätes abgefragt werden[/list]
Auswertung von fhem heraus (TBD)[/list]

Für Fragen bzw Ergänzungsvorschlägen stehe ich gerne zur Verfügung.

ciao
walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

Hallo und Danke für die Anleitung

Ich habe auf meiner Fritzbox 7270 nach der Anleitung ssh hin bekommen aber nur die Anmeldung per Passwort. :-(
Nach deiner Anleitung die ich genau befolgt habe bekomme ich aber ssh garnicht gestartet.
Es kommen auch keine Fehlermeldung im Telnet Fenster bei der eingabe aber wnen ich dann eine ssh Verbingung zur Box herstellen möchte bekomme ich das hier
root@Linuxserver ~ > ssh -2 -i ~/.ssh/id_rsa root@192.168.2.1 (root@192.168.2.1)
ssh: connect to host 192.168.2.1 port 22: Connection refused

Ich suche schon so lange eine Möglichkeit mein Fhem auf meinen Linuxserver mit meiner Fritbox zusammen zu bringen aber bis jetzt habe ich es noch nciht geschafft.
Sollte noch jemand einen tipp ich würde mich freuen..... und so lange versuce und teste ich weiter

viel Grüße Henry
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

Henry

Zitat von: Henry schrieb am So, 06 Januar 2013 16:34Hallo und Danke für die Anleitung

Ich habe auf meiner Fritzbox 7270 nach der Anleitung ssh hin bekommen aber nur die Anmeldung per Passwort. :-(
Nach deiner Anleitung die ich genau befolgt habe bekomme ich aber ssh garnicht gestartet.
Es kommen auch keine Fehlermeldung im Telnet Fenster bei der eingabe aber wnen ich dann eine ssh Verbingung zur Box herstellen möchte bekomme ich das hier
root@Linuxserver ~ > ssh -2 -i ~/.ssh/id_rsa root@192.168.2.1 (root@192.168.2.1)
ssh: connect to host 192.168.2.1 port 22: Connection refused

Ich suche schon so lange eine Möglichkeit mein Fhem auf meinen Linuxserver mit meiner Fritbox zusammen zu bringen aber bis jetzt habe ich es noch nciht geschafft.
Sollte noch jemand einen tipp ich würde mich freuen..... und so lange versuce und teste ich weiter

viel Grüße Henry
Da "Edit" noch nicht geht mache ich es mal so
Habe es jettz geschafft, zwar über eine andere Anleitung, SSH auf meiner FB 7270 mit abfrage ohne Passwort vom Linuxserver auf dem Fhem läuft inzubekommen.
Die Beispiel Abfrage aus dem obrigen Beitrag könnte ich machen und bekam die antwort.
Ich hoffe sehr das es jetzt hier weiter geht und noch mehr interesse haben die Fhem auf einen Linuxrechner haben und ihre FB mit einbinden wollen.
Bin total gespannt.
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

Sturi2011

Guten Abend...

dann will ich auch mal meinen Teil beitragen da mich das Thema auch Interessiert:

startdbear
#!/bin/sh

root=`df | sed -n -e '/ftp\//s/.*ftp\///p'`
home=/var/InternerSpeicher/$root/dropbear/
mkdir /var/tmp/.ssh
cd $home
cat *.pub >> /var/tmp/.ssh/authorized_keys
echo "root:x:0:0:root:/var/tmp:/bin/sh" > /etc/passwd
echo "boxusr80:any:1080:0:box user:/home-not-used:/bin/sh" >> /etc/passwd
echo "boxusr80int:any:2080:0:box user:/home-not-used:/bin/sh" >> /etc/passwd
./dropbear -s -r $home/dropbear_host_rsa.key


mit dem Folgenden Befehl kann ein Autostart des Dropbear Servers veranlasst werden.

echo "<path-of-the-stick>/dropbear/startdbear" > /var/flash/debug.cfg

Vorher sollte man auf jeden Fall ein cat /var/Flash/debug.cfg machen.

Das kleine Script richtet die Umgebung auf der Fritzbox entsprechend ein und startet den dropbear Server.
Nun muss nun noch eine neue 72_FB_CALLMONITOR_REMOTE.pm her, die das ganze sinnvoll nutzt.

Gruß Andreas

Sturi2011

Hi,

72_FB_CALLMONITOR_REMOTE.pm war natürlich quatsch aber da Edit nicht geht - FB Wlan/LAN Device Status war gemeint. gepatchte Version für 99_MyUtils folgt.

Gruß Andreas

Henry

Guten Abend
Schön das sind es ja schon drei bei dem ssh läuft
von meinen linuxserver wo Fhem läuft kann ich per
ssh root@fritz.box (root@fritz.box) ctlmgr_ctl r wlan settings/ap_enabled   <-- den Status auslesen bekomme 0 oder 1 ausgeben
ssh root@fritz.box (root@fritz.box) ctlmgr_ctl w wlan settings/ap_enabled 1 <-- WLan an und mit 0 WLan aus schalten
nur wie verpackt man das jetzt in perl damit fhem damit arbeiten kann?

Frage;
ist es angebracht über die Verarbeitung der Befehle in Fhem hier weiter  oder doch besser unter Anfängerfragen das ja das mehr Perl Profis sind  zu stellen?
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

Hallo Henry,

gut zu hören. Ich hätte mir Dir auch gerne das debugging meiner Beschreibung gemacht.

Mittlerweilen habe ich das ganze automatisiert. Hier nun die Vorgehensweise:

- unter /var/media/<USB device>files liegt meine modifizierte passwd:
Zitatroot:x:0:0:root:/var/tmp:/bin/sh
boxusr80:$1$wtaquih$5OXRZesTNZSuSqP.1kKJ//:1080:0:box user:/home-not-used:/bin/sh
boxusr80int:any:2080:0:box user:/home-not-used:/bin/sh

- auch unter files habe ich mir eine passende debug.cfg erstellt:
Zitat# Warten bis der Stick gemounted ist
sleep 20
# Name des USB-Sticks herausfinden und in Variable speichern
USBSTICK=$(mount | grep /var/media/ftp/ | sed -e "s|^.*ftp/||g" -e "s/ .*$//")

# Warten bis die FritzBox den Stick erreichen kann
while !(test -d /var/media/ftp/$USBSTICK/dropbear); do
        sleep 5
done

if !(test -d /var/tmp/.ssh); then
        mkdir /var/tmp/.ssh
        cp /var/media/ftp/$USBSTICK/dropbear/authorized_keys /var/tmp/.ssh
fi
chmod -R 600 /var/tmp/.ssh

# ist dropbear erreichbar
while !(test -f /var/media/ftp/$USBSTICK/dropbear/dropbear); do
        sleep 5
done

# ist /etc/passwd existent
while !(test -f /etc/passwd); do
        sleep 5
done
/bin/cat /var/media/ftp/$USBSTICK/files/passwd > /etc/passwd

# Dropbear starten
/var/media/ftp/$USBSTICK/dropbear/dropbear -m -s -r /var/media/ftp/$USBSTICK/dropbear/rsa_host_key -d /var/media/ftp/$USBSTICK/dropbear/dss_host_key

- bei meiner FB7270 funktioniert ein cp debug.cfg /var/flash/debug.cfg nicht immer, cat debug.cfg > /var/flash/debug.cfg ist die bessere Variante.

Damit wird bei jedem reboot ssh-dropbear automatisch gestartet.

Am nächsten Schritte arbeite ich gerade. Kommt demnächst.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

Hallo,

nächster Schritt - über ssh ein Kommando auf der FritzBox ausführen. Warum hat mir keiner gesagt, dass es ein SSH Perl Modul gibt?!?!?

Dafür ist das Net::SSH::Perl Modul per CPAN zu installieren.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

Zitat von: wkarl schrieb am Mi, 09 Januar 2013 20:51Hallo,

nächster Schritt - über ssh ein Kommando auf der FritzBox ausführen. Warum hat mir keiner gesagt, dass es ein SSH Perl Modul gibt?!?!?

Dafür ist das Net::SSH::Perl Modul per CPAN zu installieren.

ciao walter
Hallo  wkarl
Schön das du weiter kommst aber wäre es möglich das du uns über das Forum mit dran teilhaben lassen könntest?
Nach dem ich meine FB 7270 SSH tauglich gemacht habe  bin gerade am testen was ich so alles über die Shell der FB abfragen kann. Da ich in Perl nicht so (oder gar nicht) bewandert bin wäre es schön wenn man mit lernen könnte oder mit helfen könnte das ganze über linux voran zu treiben.
Dafür ist das Forum doch da und in der Linux Sparte ist es ja ehr ruhig :-)
Ich würde jedenfalls gerne mit helfen/machen     Henry
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

Hallo Henry,

sorry, da wollte ich noch mehr dazu schreiben. Hol ich hiermit nach. Die Lösung sieh nun wie folgt aus.

Da das iterative Abfragen über ssh zu zeitintensiv ist, habe ich mich entschossen auf der FB Perl zu installieren. Hierzu habe ich das Perl aus den FB-fhem Packet (http://fhem.de/fhem-5.3-fb7270.zip) genommen. Auspacken und das binary perl und das Verzeichnis lib auf den USB-Stick unter /var/media/ftp/<USB-Stick-Name/perl kopiert. Um die richtige Umgebung für Perl zu setzen, dient folgende Datei .profile:
#!/bin/sh

USBSTICK=$(mount | grep /var/media/ftp/ | sed -e "s|^.*ftp/||g" -e "s/ .*$
export PERL5LIB=/var/media/ftp/$USBSTICK/perl/lib/perl:/var/media/ftp/$USB
export PATH=/sbin:/usr/sbin:$PATH

Diese befindet sich im Verzeichnis /var/media/ftp/<USB-Stick-Name/files. Damit die Umgebung automatisch eingerichtet wird, habe ich meine debug.cfg wie folgt erweitert:
# Warten bis der Stick gemounted ist                                    
sleep 20                                                                
# Name des USB-Sticks herausfinden und in Variable speichern            
USBSTICK=$(mount | grep /var/media/ftp/ | sed -e "s|^.*ftp/||g" -e "s/ .
#                                                                      
export PERL5LIB=/var/media/ftp/$USBSTICK/perl/lib/perl:/var/media/ftp/$U
#                                                                      
# Warten bis die FritzBox den Stick erreichen kann                      
while !(test -d /var/media/ftp/$USBSTICK/dropbear); do                  
        sleep 5                                                        
done                                                                    
                                                                       
# ist /etc/passwd existent                                              
while !(test -f /etc/passwd); do                                        
        sleep 5                                                        
done                                                                    
/bin/cat /var/media/ftp/$USBSTICK/files/passwd > /etc/passwd            
                                                                       
if !(test -d /var/tmp/.ssh); then                                      
        mkdir /var/tmp/.ssh                                            
        cp /var/media/ftp/$USBSTICK/files/authorized_keys /var/tmp/.ssh
fi                                                                      
chmod -R 600 /var/tmp/.ssh                                              
                                                                       
#  shell Umgebung setzen                                                                    
cp /var/media/ftp/$USBSTICK/files/.profile /var/tmp                    
                                                                       
# ist dropbear erreichbar                                              
while !(test -f /var/media/ftp/$USBSTICK/dropbear/dropbear); do        
        sleep 5                                                        
done                                                                    
                                                                       
# Dropbear starten                                                      
/var/media/ftp/$USBSTICK/dropbear/dropbear -m -s -r /var/media/ftp/$USBS
~

Somit kann ich nun Perl-Programme auf der FB ausführen.
Das Perl-Programm LanDeviceActive.pl sieht wie folgt aus und liegt unter /var/media/ftp/<USB-Stick-Name/MyUtils:
#!/var/media/ftp/Storage-01/perl/perl -w

use warnings;
use strict;

my $ldnr = -1;
my $ldname = "";
my $ldsearch = $ARGV[0];
my $ldstatus = 0;

do {
        $ldnr++;
        $ldname = `/usr/bin/ctlmgr_ctl r landevice settings/landevice\"$ldnr\"/name`;
        chomp($ldname);
} until ($ldname eq "er" || $ldname eq "-1" || $ldname eq $ldsearch);

if ($ldname eq $ldsearch) {
        $ldstatus = int(`/usr/bin/ctlmgr_ctl r landevice settings/landevice\"$ldnr\"/active`);
}
elsif ($ldname eq "er") {                
        $ldstatus = 2;
}                                  
else {                            
        $ldstatus = 3;
}
exit $ldstatus;

Dem Program wird der FB LanDevice-Name übergeben und liefert dessen Status (0=nicht aktiv; 1=aktiv; 2=nicht gefunden; 3=unbekannter Fehler).

Auf meinen CentOS Server habe ich unter /opt/fhem/FHEM die Datei MyUtils.pm. Dort definiere ich meine eignen fhem Erweiterungen. Folgende Unterroutine dient zum Aufruf von Programmen/Befehlen auf der FB:
######## PersonPresent ##################################################
# What  : Checks active status of LAN device on FritzBox
# Call  : { PersonPresent('device name') }
# Source:
# Prereq: - script LanDeviceActive.sh on FritzBox
#
sub
PersonPresent($) {
my $host = "<ip der fritzbox>";
my $user = "root";
my $landevice = $_[0];
my $ssh2fritzbox = Net::SSH::Perl->new($host, debug=>0, identity_files=>["/root/.ssh/id_rsa"]);
$ssh2fritzbox->login($user);
my($stdout, $stderr, $exit) = $ssh2fritzbox->cmd(". ~/.profile; /var/media/ftp/Storage-01/MyUtils/LanDeviceActive.pl $landevice");
# Log 3, ">>> $exit";
return $exit;
}

Leider wird beim remote-Aufruf nicht die Benutzerumgebung geladen, so dass sie vor dem eigendlichen Kommado ge-sourced werden muss.

Die fhem Definition ist wie folgt:
################################################
#####
################################################
define WalterZuHause dummy
attr WalterZuHause room Server
################################################
define CheckWalterZuHause at +*00:15 { \
    use MyUtils;; \
    if (PersonPresent('iPhone-von-Walter') == 1) { \
        fhem("set WalterZuHause 1") \
    } \
    else { \
        fhem("set WalterZuHause 0") \
    } \
}
attr CheckWalterZuHause room Server


So das wars. Ich hoffe es hilft dem einen oder anderen. Da meine letzten professioniellen Programmierung ca 20 Jahre her sind, mag der vorliegende code etwas ungelenkt wirken. Für Verbesserungen bin jederzeit zu haben. Für Fragen natürlich auch ;-)

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

Zitat von: wkarl schrieb am Do, 10 Januar 2013 08:59So das wars. Ich hoffe es hilft dem einen oder anderen. Da meine letzten professioniellen Programmierung ca 20 Jahre her sind, mag der vorliegende code etwas ungelenkt wirken. Für Verbesserungen bin jederzeit zu haben. Für Fragen natürlich auch ;-)

ciao walter
Hallo wkarl
Sofort habe ich mich ran gemacht das von dir vorgeschlagene um zusetzen. Die Vorbereitungen gingen auch ohne Fehlermeldungen über die Bühne  aber es funktioniert  nicht. Irrgend wo habe ich einen Fehler drinn und es Klasse wenn ihr mir bei der Fehlersuche helfen könntet.
Ich bekomme keinen Status angezeigt. Im Telnet erscheint schön alle 15min
Global global DELETED CheckWalterZuHause
Global global DEFINED CheckWalterZuHause

Aber in der .Log finde ich folgene Fehlermeldung
2013.01.10 20:15:59 3: MyUtils.pm did not return a true value at (eval 41) line 1.
BEGIN failed--compilation aborted at (eval 41) line 1.

Weiß jemand was da bemeckert wird???
Und noch zwei Fragen wie kann ich denn Prüfen
1. läuft Perl auf meiner FB7270 (also habe ich alles richtig gemacht auch wnen keien Fehlermeldung kam)?
2. wie kann ich Prüfen ob die zusammenarbeit Linux/FhemServer <--> FB7270 richtig klappt (mit der Perl Sache)?
SSH Verbindung und Komuniktion zwischen LinuxServer und FB7270 funktioniert und ist getestet.

Liebe Grüße und Dank im vorraus Henry
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

Hallo Henry,

dann lass uns das ganze mal Schritt für Schritt untersuchen.


    melde Dich von Deiner Linux Box an der FB mit ssh an (welche Linux Variante setzt Du denn ein?)
    rufe perl mit der Option -v auf (bei mir:
/var/media/ftp/Storage-01/perl/perl -v)# ./perl/perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for mipsel-linux

Copyright 1987-2011, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

jetzt der Test von LanDeviceActive.pl # ./MyUtils/LanDeviceActive.pl iPhone-von-Walter
# echo $?
1
# ./MyUtils/LanDeviceActive.pl NichtExistent
# echo $?
2
#
die Umgebungsvariable $? enthält den Exit code.
nun weiter auf der Linux Box [root@nashome ~]# /usr/bin/ssh -2 -t -i ~/.ssh/id_rsa -l root <ip von FB> '. ~/.profile;/var/media/ftp/Storage-01/MyUtils/LanDeviceActive.pl iPhone-von-Walter'
Connection to 192.168.178.1 closed.
[root@nashome ~]# echo $?
1
[root@nashome ~]# /usr/bin/ssh -2 -t -i ~/.ssh/id_rsa -l root <ip von FB> '. ~/.profile;/var/media/ftp/Storage-01/MyUtils/LanDeviceActive.pl NichtExistent'
Connection to 192.168.178.1 closed.
[root@nashome ~]# echo $?
2
[/list]
Wenn bisher kein Fehler auftritt, dann ist auf Systemebene alles in Ordnung.

Lass mich das Ergebnis wissen.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

Danke für deine Hilfe
***Kurzinfo***
Also Perl auf der FB läuft weil erster Test ok :-)

die LanDeciceActive.pl habe ich geändert und der aufruft:
ssh -2 -t -i ~/.ssh/id_rsa -l root 192.168.2.1 '. ~/.profile;/var/media/ftp/SanDisk-Cruzer-01/MyUtils/LanDeviceActive.pl LinuxServer'
Meldung:
/var/media/ftp/SanDisk-Cruzer-01/MyUtils/LanDeviceActive.pl: line 3: 1: not found
/var/media/ftp/SanDisk-Cruzer-01/MyUtils/LanDeviceActive.pl: line 6: 2: not found
Connection to 192.168.2.1 closed.

keine Ahnung aber irrgend etwas ist noch falsch
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

und hier kommt meine LanDeviceActive.pl

#!/var/media/ftp/SanDisk-Cruzer01/perl/perl -w

use warnings;
use strict;

my $ldnr = -1;
my $ldname = "";
my $ldsearch = $ARGV[0];
my $ldstatus = 0;

do {
        $ldnr++;
        $ldname = `/usr/bin/ctlmgr_ctl r landevice settings/landevice\"$ldnr\"/name`;
        chomp($ldname);
} until ($ldname eq "er" || $ldname eq "-1" || $ldname eq $ldsearch);

if ($ldname eq $ldsearch) {
        $ldstatus = int(`/usr/bin/ctlmgr_ctl r landevice settings/landevice\"$ldnr\"/active`);
}
elsif ($ldname eq "er") {                
        $ldstatus = 2;
}                                  
else {                            
        $ldstatus = 3;
}
exit $ldstatus;
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

und der Aufruf von auf der FB von ./MyUtils/LanDeviceActive LinuxServer funktioniert klaglos?

zeigst Du mir noch die .profile und debug.cfg.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

***anstelle von EDIT***
aber die obrige Fehlermeldung kam auf deiner LanDeviceAcktiv.pl

# ./MyUtils/LanDeviceActive.pl iPhone-von-Walter
# echo $?
1
# ./MyUtils/LanDeviceActive.pl NichtExistent
# echo $?
2
#

auf dieser kommt die Fehlermeldung :
/var/media/ftp/SanDisk-Cruzer-01/MyUtils/LanDeviceActive.pl: line 3: 1: not found
/var/media/ftp/SanDisk-Cruzer-01/MyUtils/LanDeviceActive.pl: line 6: 2: not found
Connection to 192.168.2.1 closed.

DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

um Missverständnisse auszuräumen ...
# ./MyUtils/LanDeviceActive.pl iPhone-von-Walter
# echo $?
1
# ./MyUtils/LanDeviceActive.pl NichtExistent
# echo $?
2
#

hier befinde ich mich auf meiner FB im Verzeichnis /var/media/ftp/Storage-01 und führe das Perl-Programm auf der FB aus. echo $? ist keine Fehlermeldung, sondern ein Kommando mit dem der Exit code des letzten ausgeführten Programmes ausgegebne wird.

Hast Du dies auch so ausgeführt?

Wenn nein, bitte nachholen und Ergebnis posten.
Wenn ja und kein Fehler, bitte .profile und debug.cfg posten

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

Hallo Henry,

wie sieht es aus? Bist Du weitergekommen?

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Sturi2011

Hi,

wenn ich die .Profile auf den Stick kopiere wird sie kurz darauf automatisch gelöscht. Habt Ihr eine Idee warum?
Die Debug.cfg habe ich nun so angepasst, das sie die Profile nach .Profile kopiert.

Die oben gepostete Profile sowie die debug.cfg sind jeweils hinten abgeschnitten und unvollständig (lange Zeilen)

Bei meinen selbst gebauten Varianten, habe ich momentan noch ein Problem, mit den Umgebungsvariablen.
Er Sucht das Perl immer im Home von Rudi...ich komme nicht weiter mit dem Setzen der Variablen.

Wenn ich das Script LanDeviceActive.pl anstelle der fhem.pl in das Startfhem Script schreibe geht sie.
Versuche ich sie Einzeln zu starten fehlt die Warning. Perl -V gibt eine fehlende Config.pl - aber wie gesagt,
die Scripte setzen bei mir auch partout nicht für die Shell die PERL5LIB Einstellungen.

wkarl

Hallo,

Zitatwenn ich die .Profile auf den Stick kopiere wird sie kurz darauf automatisch gelöscht. Habt Ihr eine Idee warum?

Lediglich eine Verdachtsvermutung. Hatte zuerst den Stick NTFS formatiert. Da gabs ein paar Ungereimtheiten bzgl des Verhaltens. Nach Empfehlung aus dem Internet ist er jetzt ext2 formatiert.

ZitatBei meinen selbst gebauten Varianten, habe ich momentan noch ein Problem, mit den Umgebungsvariablen.
Er Sucht das Perl immer im Home von Rudi...ich komme nicht weiter mit dem Setzen der Variablen.
Hast Du das home Verzeichnis in /etc/passwd angepasst? Wenn ja und Du gehst mit telnet an die FB, dann wird lediglich das Web-Passwort gefordert. Du bist aber nicht mit der Umgebung von root angemeldet. Entweder nach dem Login ein su - oder per ssh root@FBipadresse anmelden.
Ansonsten benötige ich ein bischen mehr Information was Du alles gemacht hast und wie sich die Fehler genau äussern.
ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

Hallo,

hier nochmal die vollständigen Inhalte von .profile und debug.cfg. Ich kann nicht nachvollziehen was hier falsch gelaufen ist.

#!/bin/sh

USBSTICK=$(mount | grep /var/media/ftp/ | sed -e "s|^.*ftp/||g" -e "s/ .*$//")
export PERL5LIB=/var/media/ftp/$USBSTICK/perl/lib/perl:/var/media/ftp/$USBSTICK/perl/lib/perl/arch
export PATH=/sbin:/usr/sbin:$PATH


# Warten bis der Stick gemounted ist
sleep 20
# Name des USB-Sticks herausfinden und in Variable speichern
USBSTICK=$(mount | grep /var/media/ftp/ | sed -e "s|^.*ftp/||g" -e "s/ .*$//")
#
export PERL5LIB=/var/media/ftp/$USBSTICK/perl/lib/perl:/var/media/ftp/$USBSTICK/perl/lib/perl/arch
#
# Warten bis die FritzBox den Stick erreichen kann
while !(test -d /var/media/ftp/$USBSTICK/dropbear); do
sleep 5
done

# ist /etc/passwd existent
while !(test -f /etc/passwd); do
sleep 5
done
/bin/cat /var/media/ftp/$USBSTICK/files/passwd > /etc/passwd

if !(test -d /var/tmp/.ssh); then
mkdir /var/tmp/.ssh
cp /var/media/ftp/$USBSTICK/files/authorized_keys /var/tmp/.ssh
fi
chmod -R 600 /var/tmp/.ssh

#
cp /var/media/ftp/$USBSTICK/files/.profile /var/tmp

# ist dropbear erreichbar
while !(test -f /var/media/ftp/$USBSTICK/dropbear/dropbear); do
sleep 5
done

# Dropbear starten
/var/media/ftp/$USBSTICK/dropbear/dropbear -m -s -r /var/media/ftp/$USBSTICK/dropbear/rsa_host_key -d /var/media/ftp/$USBSTICK/dropbear/dss_host_key


ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

sweetie-pie

Hallo,

ich frage mal vorsichtig, dieses Projekt ist euch bekannt?

http://freetz.org/wiki

Ich habe vor Jahren auch mit nachladen usw. angefangen. Das hat immer wieder zu Problemen geführt. Das freetz-Projekt nimmt das AVM-Image und erweitert es um div. wählbare Tools, u.a. auch dropbear mit Keys o.ä....
Das Projekt hat eine starke und hilsbereite Gemeinde. Ich selber setzte freetz seit 5-6 Jahren ein...

 Gruß
   Holger

wkarl

Ja, kenn ich und hatte es auch schon mal im Einsatz. Bin dann aber wieder auf Orginal-AVM zurück und bau mir das dazu was ich brauche.
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Henry

Zitat von: sweetie-pie  schrieb am Sa, 19 Januar 2013 10:05Hallo,

ich frage mal vorsichtig, dieses Projekt ist euch bekannt?
Ja ich kenne das auch und hatte es mal auf meine FB 7170 getestet.
Da aber auch ich immer mir der neuesten oder gar Labor Firmware bei meiner 7270 arbeite gefällt mir das nach laden besser.
Kein Risiko und es geht auch alles bis jetzt jedenfalls.Die Probleme kamen durch mein unverständnis oder meien Fehler.
Ich habe jetzt per nachladen SSH und Perl auf meiner FB7270 zu laufen und das ohne Probleme.

Schönen Smastag ... Henry
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

Sturi2011

Hi,

auch hier - bekannt aber nicht in der Haupt-Box im Einsatz. In den W502v in der Garage und im Carport als WDS empfänger ist freetz ok. Wenn die Haupt Box nicht mehr geht und man ist dientslich verreist ist es für die bessere Hälfteaber einfacher eine USB Stick aus der box zu ziehen und sie Stromlos zu machen als im Freetz festzustellen wo es hängt. Gerade wenn die Box neben Fhem auch noch so unwichtige Aufgaben wie Dect-Basis oder Internetzugang bereitstellt......

Scripte auf der Fritz gehen bei mir übrigens auch seit ein paar Tagen. Net::SSH::Perl ist auch da aber ich bekomme u s verrecken Math::Pari nicht auf Ubuntu 12.04lts 64 Bit ans laufen...

ich werde heute Abend mal Net::SSH probieren.

Gruß Andreas

Henry

Zitat von: Sturi2011 schrieb am Sa, 19 Januar 2013 18:22Hi,
 aber ich bekomme u s verrecken Math::Pari nicht auf Ubuntu 12.04lts 64 Bit ans laufen.
Gruß Andreas
Willkommen im Club, bei mir ist es nur andersherum. Ich bekomme es nicht auf meinen DebianServer zum laufen aber Walter hilft mir total und zur Zeit komme ich zu mindestens immer kleine Schritte weiter. Aber durch einen Fehler habe ich es auf meinen Desktop Ubuntu 12.10 installiert und da läuft es was mir aber nicht viel nützt.
Also du bist nicht alleine und noch sehe ich ein kleines Licht am ende des Tunnels.

Henry
DebianServer als FHEM-Plattform
FS20 über CUL868
Intertechno über Signalduino
Philips HUE

wkarl

Hallo,

versuch mal folgendes:
    mal den Inhalt von .cpan löschen
    build-essentials installiert?
    libmath-bigint-gmp-perl installiert?
Quintessenz aus dem trouble shooting mit Henry aus den letzten Tagen

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Sturi2011

Hi,

geht soweit alles - cpan tat nicht aber dh-make-perl hat es dann getan.
Nun habe ich versucht, das ganze jede Minute aufzurufen. Offensichtlich
wird der Port nach dem ende der Connection noch für eine Minute blockiert.

Net::SSH: Can't bind socket to port 1023: Die Adresse wird bereits verwendet at /opt/fhem/FHEM/99_myUtils.pm

Blöd wenn man 2 Geräte abfragen will - Close bringt nichts...

Gruß Andreas

Sturi2011

Hi,

auch gelöst->net::ssh::perl.pm: Rot original, grün richtig weil Connection bereits closed aber Socket noch gebunden.

sub _create_socket {
    my $ssh = shift;
    my $sock = gensym;

        my ($p,$end,$delta) = (0,1,1); # normally we use whatever port we can get
           ($p,$end,$delta) = (1023,512,-1) if $ssh->{config}->get('privileged');

        # allow an explicit bind address
    my $addr = $ssh->{config}->get('bind_address');
        $addr = inet_aton($addr) if $addr;
        ($p,$end,$delta) = (10000,65535,1) if $addr and not $p;
        $addr ||= INADDR_ANY;

    for(; $p != $end; $p += $delta) {
        socket($sock, AF_INET, SOCK_STREAM, getprotobyname('tcp') || 0) ||
            croak "Net::SSH: Can't create socket: $!";
        last if not $p or bind($sock, sockaddr_in($p,$addr));
        if ($! =~ /Address already in use/i) {
            close($sock) or warn qq{Could not close socket: $!\n};
[color=red]            next;[/color]        }
[color=green]        next;[/color]
        croak "Net::SSH: Can't bind socket to port $p: $!";
    }
        if($p) {
                $ssh->debug("Allocated local port $p.");
                $ssh->{config}->set('localport', $p);
        }

    $sock;
}


Gruß Andreas

Sturi2011

Hi,

merke - in Code Blöcken wird der BBCode des Forums als Code interpretiert.....

Gruß Andreas