FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: docb am 24 Juli 2013, 11:15:32

Titel: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: docb am 24 Juli 2013, 11:15:32
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
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: PeMue am 25 Juli 2013, 19:32:13
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 (//www.fhemwiki.de/wiki/FritzBox_Webzugriff_absichern) ist, braucht es auch einen User. Ginge es, noch einen Usernamen mit "einzubauen"?

Danke + Gruß

PeMue
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: docb am 25 Juli 2013, 19:44:59
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
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: AnDiBaCkE am 08 August 2013, 20:30:47
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
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: docb am 08 August 2013, 20:35:09
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
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: fh168 am 09 August 2013, 18:03:29
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>
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: AnDiBaCkE am 09 August 2013, 22:31:03
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
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: Panik am 07 Oktober 2013, 16:16:27
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"
Titel: Aw: Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: docb am 07 Oktober 2013, 17:17:51
Hallo,
gute Idee, danke für den Hinweis!
Viele Grüße
doc
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: Rosco am 30 November 2014, 12:55:27
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)
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: vbs am 30 November 2014, 13:09:29
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.
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: Rosco am 02 Dezember 2014, 21:37:56
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
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: vbs am 02 Dezember 2014, 21:43:29
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.
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: Rosco am 03 Dezember 2014, 17:41:11
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
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: chr2k am 06 Dezember 2014, 01:38:21
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
Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: dert am 15 Dezember 2014, 17:05:49
Hallo zusammen,

hier ist die Lösung: plink das mini Putty

Hier mal zwei Beispiele:

Raspberry reboot
"C:\Program Files (x86)\PuTTY\plink.exe" -pw geheim pi@192.168.111.222 sudo shutdown -r 0

Raspberry ausschalten
"C:\Program Files (x86)\PuTTY\plink.exe" -pw geheim pi@192.168.111.222 sudo shutdown -h 0

Ebenso können andere Befehle eingegeben werden und als Verknüpfung speichern. Wie das geht ist in dem Artikel genau beschrieben.

http://www.gieseke-buch.de/raspberrypi/windows-befehl-per-mausklick-an-raspberry-pi (http://www.gieseke-buch.de/raspberrypi/windows-befehl-per-mausklick-an-raspberry-pi)

Ich hoffe mal, dass ich den Link hier angeben darf.

Titel: Antw:Fhem über Telnet per Doppelklick starten (Windows)
Beitrag von: chr2k am 08 Januar 2015, 13:35:02
Zitat von: dert am 15 Dezember 2014, 17:05:49
Hallo zusammen,

hier ist die Lösung: plink das mini Putty

http://www.gieseke-buch.de/raspberrypi/windows-befehl-per-mausklick-an-raspberry-pi (http://www.gieseke-buch.de/raspberrypi/windows-befehl-per-mausklick-an-raspberry-pi)

Einige Befehle für den Putty sind aber nicht für Telnet geeignet bzw werden nicht von Telnet unterstützt, so auch der Booten Befehl.

Es wäre also klasse, wenn jemand einen Workaround für Telnet hätte, wo ich eine Verknüpfung auf dem Desktop habe die Telnet startet, den Befehl FHEM zu starten an die Fritzbox schickt und dann ganz wichtig das Telnetfenster automatisch wieder schließt