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
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
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
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
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
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>
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
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"
Hallo,
gute Idee, danke für den Hinweis!
Viele Grüße
doc
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)
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.
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
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.
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
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
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.
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