Fhem über Telnet per Doppelklick starten (Windows)

Begonnen von docb, 24 Juli 2013, 11:15:32

Vorheriges Thema - Nächstes Thema

docb

Hallo Leute,
nachdem ich viel mit fhem rumexperimentiere und es mir deswegen hin und wieder abschmiert, hat es mich genervt, mich jedesmal mit putty auf die FB zu verbinden, ins richtige Verzeichnis zu navigieren und fhem zu starten. Deswegen hab ich ein Skript geschrieben, dass dies per Doppelklick erledigt. Das sollte nicht nur auf der FB funktionieren, sondern auf jedem System, z.B. Raspi, auf dem Telnet aktiv ist. Wichtig ist, dass ihr Telnet auf Windows installiert habt (Systemsteuerung, Programme, Windows-Features, Telnet-Client aktivieren).
Es gibt zwei Möglichkeiten. Die erste hat zunächst bei mir nicht funktioniert, hat aber den Vorteil, dass sich das Telnet-Fenster automatisch schließt (jetzt läuft sie auch).
Einfach Code in eine Textdatei kopieren und als name.vbs speichern. Ausführen per Doppelklick.


set sh=WScript.CreateObject("WScript.Shell")

sh.run "Telnet 1.2.3.4"   'IP EINTRAGEN
WScript.Sleep 1000

sh.SendKeys "Passwort"&vbcr  'PASSWORT EINTRAGEN
WScript.Sleep 500

sh.SendKeys "./var/InternerSpeicher/fhem/startfhem"&vbcr 'HIER PFAD ANPASSEN
        sh.SendKeys ""&vbcr

WScript.Sleep 20000
sh.SendKeys "exit"&vbcr

WScript.Sleep 500
        sh.SendKeys ""&vbcr



Zweite Möglichkeit (quasi hintenrum), wenn die erste nicht klappt: die folgenden Codezeilen einfach in eine Textdatei kopieren und als name.wsf abspeichern.

<job>
<script language="VBScript">
Option Explicit
On Error Resume Next
Dim WshShell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
WScript.Sleep 1000
WshShell.SendKeys "telnet 1.2.3.4"   'HIER EURE IP EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 1000
WshShell.SendKeys "password"  'HIER EUER PASSWORT EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "./var/InternerSpeicher/fhem/startfhem"  'HIER DEN PFAD ANPASSEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "exit"
WshShell.SendKeys ("{Enter}")
WScript.Quit
WshShell.close
</script>
</job>

Achtung: hatte das <job>...</job> vergessen und gerade noch ergänznt... jetzt sollte es laufen ;-)


Für Verbesserungsvorschläge bin ich immer dankbar, wer es brauchen kann viel Spaß damit.
Viele Grüße
Doc
I love FHEM!

PeMue

Hallo Doc,

ich habe das Skript noch nicht probiert, aber mein Raspberry Pi fragt nach einem Usernamen. Der Fritz Box ist das egal (zumindest meiner). Wenn aber die Oberfläche anders abgesichert ist, braucht es auch einen User. Ginge es, noch einen Usernamen mit "einzubauen"?

Danke + Gruß

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

docb

Logisch - versuch es doch mal so:


set sh=WScript.CreateObject("WScript.Shell")

sh.run "Telnet 1.2.3.4"   'IP EINTRAGEN
WScript.Sleep 1000

sh.SendKeys "username"&vbcr  'USER EINTRAGEN
WScript.Sleep 500

sh.SendKeys "Passwort"&vbcr  'PASSWORT EINTRAGEN
WScript.Sleep 500

sh.SendKeys "./var/InternerSpeicher/fhem/startfhem"&vbcr 'HIER PFAD ANPASSEN
        sh.SendKeys ""&vbcr

WScript.Sleep 20000
sh.SendKeys "exit"&vbcr

WScript.Sleep 500
        sh.SendKeys ""&vbcr


Viele Grüße
doc
I love FHEM!

AnDiBaCkE

Hallo!

Da ich auf meiner 7330 SL FHEM nicht zum Autostart überreden kann, finde ich die Idee mit dem Script sehr gut.
Leider funktionieren bei mir beide Varianten nicht obwohl ich jeweils alle 3 Parameter im Script angepasst habe.
Mit Putty startet alles ganz normal...

Beim VBS logged er sich ganz normal ein, bricht dann jedoch ab mit folgender Meldung: Can't open Perl script "fhem.pl": No such file or directory.

Beim WSF script schreibt er das selbe.

Ist das Script eventuell nur auf eine bestimmte Konfiguration abgestimmt oder sollte es so überall funktionieren?
Wo könnte das Problem liegen?

Vielen Dank.

Gruß,
AnDiBaCkE
FHEM auf RasPi2
CUL und HMLAN Adapter

docb

Servus!
Hm. Das klingt ja ganz komisch. Wie startest du denn fhem bei dir über putty? Also welchen Befehl gibst du ein?
Hast du die Zeile

sh.SendKeys "./var/InternerSpeicher/fhem/startfhem"&vbcr 'HIER PFAD ANPASSEN

entsprechend angepasst? Ich habe eine reguläre 7330, da funzt das ohne Problem.
Viele Grüße
doc
I love FHEM!

fh168

Hallo,

danke für den Hinweis.
Ich habe Putty und FHEM auf Raspberry Pi bei mir laufen und habe das Script so angepasst.


<job>
<script language="VBScript">
Option Explicit
On Error Resume Next
Dim WshShell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
WScript.Sleep 2000
WshShell.SendKeys "c:\users\admin\putty.exe 192.168.178.7"   'HIER EURE IP EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "root"  'HIER DEN BENUTZERNAME EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000

WshShell.SendKeys "xxxx"  'HIER DAS PASSWORT EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000

WshShell.SendKeys "cd /opt/fhem/"  'HIER DEN PFAD ANPASSEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000

WshShell.SendKeys "perl fhem.pl fhem.cfg"  'HIER DEN AUFRUF ANPASSEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "exit"
WshShell.SendKeys ("{Enter}")
WScript.Quit
WshShell.close
</script>
</job>
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

AnDiBaCkE

Hallo Leute!

Hab die WSF Datei nun mit eurer Hilfe hin bekommen :-)
Es scheint nun ein Mix aus beiden Vorschlägen zu sein und sieht so aus:

<job>
<script language="VBScript">
Option Explicit
On Error Resume Next
Dim WshShell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
WScript.Sleep 2000
WshShell.SendKeys "telnet 192.168.178.1"   'HIER EURE IP EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "xxxxxx"  'HIER DAS PASSWORT EINGEBEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "cd /var/media/ftp/pny-USB2-0FD-05/fhem"  'HIER DEN PFAD ANPASSEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "./startfhem"  'HIER DEN AUFRUF ANPASSEN
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000
WshShell.SendKeys "exit"
WshShell.SendKeys ("{Enter}")
WScript.Quit
WshShell.close
</script>

Vielen Dank!

Gruß,
Andreas
FHEM auf RasPi2
CUL und HMLAN Adapter

Panik

Hallo,

ich habe das Script auch probiert und es funktioniert.
Nur noch eine kleine Verbesserung, weil ich mich selbst wunderte,
warum es auf Anhieb nicht ging und der Groschen erst spät fiel:
Es sollte nach/unter "On Error Resume Next" noch ein  Hinweis erscheinen
msgbox "Bevor Sie fortfahren, aktivieren Sie Telnet mittels Telefon:"  & vbcr & "Aktivieren    : #96*7*  oder **720 "  & vbcr & "Deaktivieren: #96*8*  oder **721 ", vbokonly, "Hinweis"
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

docb

Hallo,
gute Idee, danke für den Hinweis!
Viele Grüße
doc
I love FHEM!

Rosco

Hallo zusammen,

nach FritzOS 6,20 kommt diesem Scipt eine neue Bedeutung zu, vielen Dank dafür.
Doch leider schließen sich die Telnet Fenster (Win7 32bit) bei mir nicht (bei beiden Scipts, wie oben beschrieben).

Habt ihr eine Idee oder eine Beschreibung wie man dies Scipt über Putty verarbeiten lassen kann.?

Beste Grüße
Rosco
(der so gar kein Programmierer ist)
fhem 5.8 (Community Ware), CUL CC1101-USB-Lite 868MHz (3.4), HMLAN, Loxone Miniserver, Loxberry, HA Bridge
RSL 2-Draht Schalter
FS20 ST, DI
FHT80b, 8v, FHTTK
HM_PB_4DIS_WM, HM-LC-SW2-FM

vbs

Kann man nicht einfach putty aufrufen und per "-m" eine Datei mit Kommandos übergeben, die ausgeführt werden sollen? Scheint mir auf den ersten Blick einfacher.

putty.exe 1.2.3.4 -l root -pw geheim -m c:\\do_commands.txt


Man muss dann nur in "do_commands.txt" reinschreiben, welche Befehle aufgerufen werden sollen.
Und den Aufruf kann man sich ja auch auf den Desktop legen.

Rosco

Hallo vbs,

vielen Dank für deine Gedanken.
Muss nicht noch der Name des Nutzers übergeben werden?
Leider kann ich die commands nicht so richtig interpretieren. Wird mit Root automatisch in das Wurzelverzeichnis gewechselt? Wie muss dann die Struktur in der Datei dp_commands.txt aussehen? Muss dort eine Sciptsprache angewandt werden.

Entschulige die Fagen, aber du merkst, dass ich da nicht firm bin...
Beste Grüße
Rosco
fhem 5.8 (Community Ware), CUL CC1101-USB-Lite 868MHz (3.4), HMLAN, Loxone Miniserver, Loxberry, HA Bridge
RSL 2-Draht Schalter
FS20 ST, DI
FHT80b, 8v, FHTTK
HM_PB_4DIS_WM, HM-LC-SW2-FM

vbs

Hi Rosco,

ist kein Problem :)

Also "-l root" ist der Nutername, der zum Anmelden benutzt werden soll. "-pw geheim" ist entsprechend das Passwort des Users.
Nach dem Einloggen befindet sich die Shell im User-Verzeichnis des Users (zB /home/root).

Die commands.txt ist eine einfach Textdatei. Ich hab es jetzt nicht ausprobiert, aber sehr wahrscheinlich kannst du dort zeilenweise Shell-Kommandos angeben, die dann sequenziell ausgeführt werden sollen. Angeblich darf die Datei bei Bedarf auch direkt ein Shell-Skript sein.

Rosco

Hallo vbs,

danke dir für die Erläuterungen, da lag ich mit -l root ja mächtig daneben.
Ich werde morgen mal einige der weiter oben benannten Sciptzeilen in die txt-Datei schreiben und testen.

Schönen Abend und beste Grüße
Rosco
fhem 5.8 (Community Ware), CUL CC1101-USB-Lite 868MHz (3.4), HMLAN, Loxone Miniserver, Loxberry, HA Bridge
RSL 2-Draht Schalter
FS20 ST, DI
FHT80b, 8v, FHTTK
HM_PB_4DIS_WM, HM-LC-SW2-FM

chr2k

Hallo,

also ich hab auch das Problem dass sich das script Fenster nicht schließt.

Habe auch den tipp probiert mit putty und der commando zeile und einer text datei das zum laufen zu bekommen. Wenn ich das richtig in der Hilfe von Putty verstanden habe, gehen teile der command line parameter aber nicht mit telnet.

Gruß
Christian