SSH Client Modul

Hallo!
Ich würde mir ein SSH Client Modul für IP-Symcon wünschen mit welchem es möglich ist nach Eingabe von User und Passwort Befehle an einen Server zu schicken. Die Rückantwort sollte über eine Variable verfügbar sein.

Sämtliche SSH Lösungen basierend auf PHP funktionieren bei mir leider nicht zuverlässig und sind relativ kompliziert in der Umsetzung.
Ein SSH Client Modul würde die Automatisierung von sehr vielen Geräten ermöglichen (z.B. UnRAID Server, Raspbery Pi, SAT Receiver, sämtliche Linux/Windows/Mac/Unix basierte Systeme mit aktiviertem SSH Server). Evtl. ist es auch möglich das Modul auf Putty Binaries (verfügbar für Linux und Windows) aufzusetzen?

Die Möglichkeiten mit so einem SSH Client wären m.E. gigantisch und würden die Automatisierung deutlich erleichtern. Würde mich freuen wenn diese Funktion in späteren Releases umgesetzt wird.

Gruß
Christian

Hallo,

das Problem ist nicht neu und kommt mir bekannt vor.

Schau mal da rein: Link

Ob das nun ein Windows Kommando für die lokale Maschine ist oder ein ssh-Kommando für eine Remote-Linux-Maschine ist dabei egal.
Aktuelle Windows-Versionen können ssh und für die Benutzer-Authorisierung würde ich direkt auf Public-Key Verfahren setzen, damit man nirgentwo Passwörter in Scripte usw. hat.

Würde dann so aussehen:

ssh <user>@<server> -t "<befehl 1> && <befehl 2> && <befehl 3>"

Viel Erfolg

1 „Gefällt mir“

Hi,
was sollte denn so ein Modul können und was klappt bei dir nicht?

Ich benutze ssh um meine Enigma2-Receiver neu zu starten oder ein Upgrade anzustoßen. Befehle sehen alle so aus:

shell_exec("ssh root@192.168.178.225 '/media/usb/wichtig/restart.sh&'"); // SZ2 Duo4K

In diesem Fall starte ich das Scripte um E2 neu zu starten.

Ralf

1 „Gefällt mir“

Danke Tuxtom007 und HarmonyFan für Eure Tipps.
Allerdings hatte ich das schon ausprobiert. Mein IPS läuft auf Windows 10 Pro und das ssh unterstützt leider keinen automatisierten Login mit Passwort. Ich verwende - wie vermutlich 95% aller User - den SSH Login mit Passwort.

Bislang habe ich mich gegen den Public Key entschieden da ein erfolgreicher Angriff auf den Server leider dann auch dem Angreifer einen Zugriff auf alle SSH Sessions gibt. Aus meiner Sicht ist das noch unsicherer als das Passwort im Skript. Ich denke aber das ist ansichts-Sache und soll hier nicht diskutiert werden.

Ein SSH Client Modul für IPS wäre aus meiner Sicht eine hilfreiches Instrument welches dem Anwender einen einfachen SSH Login mit Passwort oder Public Key zur Verfügung stellen würde. Hier könnte dann auch daß Passwort verschlüsselt gespeichert werden.

Am Ende wird es wohl dann aber auf einen Publilc Key hinauslaufen da meine aktuelle IPS_ExecuteEx Lösung nicht zuverlässig funktioniert. Ich mache mir auch keine große Hoffnung daß mein Vorschlag realisiert wird aber ich wollte es nicht unversucht lassen.

Habe jetzt mal zum Test die Verbindung IPS <=> Unraid auf Public Key Authentication eingestellt.
Von IPS (Windows 10) kann ich problemlos ohne PW Eingabe einen Reboot Befehl senden.
Windows:
>ssh root@192.168.6.9 poweroff

Allerdings kann ich diesen SSH Befehl nicht von IP-Symcon unter Verwendung von shell_exec ausführen:

shell_exec("ssh root@192.168.6.9 -t 'poweroff'");
shell_exec('ssh root@192.168.6.9 -t "poweroff"');
shell_exec('ssh root@192.168.6.9 -t poweroff');
shell_exec("ssh root@192.168.6.9 -t poweroff");
shell_exec("ssh root@192.168.6.9 poweroff");
shell_exec('ssh root@192.168.6.9 poweroff');

Funktioniert das shell_exec nur wenn IP-Symcon auf einem Linux System installiert ist oder habe ich irgendwo einen Syntax Fehler???

1 „Gefällt mir“

Hi,
bei Windows kann es sein das Du vielleicht den komplette Pfad auf ssh angeben musst.

Zu deinem ursprünglichen Problem such mal nach sshpass

sshpass -p your_password ssh user@hostname

Ralf

1 „Gefällt mir“

Das mit dem kompletten Pfad hatte ich auch schon ausprobiert. Leider ohne Erfolg. Trotzdem Danke für den Hinweis.

Ehrlich gesagt habe ich sogar die Vermutung daß shell_exec unter Windows nicht richtig funktioniert.
Wenn ich den Befehl 3-4x ausführe dann reagiert IP-Symcon nicht mehr und das System muß neu gestartet werden. Da das an einem produktiven System nicht der „Hit“ ist stelle ich die Versuche mit shell_exec jetzt ein. Sollte es irgend jemanden geben der shell_excec unter Windows am Laufen hat dann würde mich der genaue Syntax (Anführungszeichen, etc.) interessieren.

Bleibt noch zu hoffen daß der ursprüngliche Feature Request beantwortet wird.
Da der Nutzen für viele User und Anwendungen da ist sollte seitens dem Dev Team hoffentlich ein Interesse bestehen hier ein Modul zu entwickeln. Ehrlich gesagt kann ich mir nach SIP kein nützlicheres Feature für Hausautomation als einen SSH Client vorstellen.
Aus meiner Sicht ein „Killer-Feature“. :wink:

Soweit ich weiß, kannst du das mit realisieren: Connecting · phpseclib

Und es ist sogar mit Windows kompatibel, wenn ich mich richtig erinnere.

paresy

Also ich hab’s damit leider auch nicht hinbekommen. :frowning:

Der eigentliche Sinn und Zweck dieses Posts war eine Aussage zu diesem Feature Request zu bekommen. An wen muß man sich bei IP-Symcon wenden um einen Feature Request zu stellen und eine Aussage (ja, nein, vielleicht) zu bekommen? Ich dachte mir hierzu ist diese Forumskategorie gedacht. Irgendwo muß man doch einen Feature Request einkippen können? Ein SW lebt doch von den Ideen und Vorschlägen der User.

Nein :slight_smile:

paresy

PS: Lange Erklärung: Das Feature Forum ist ein dazu gedacht Ideen zu sammeln und den Bedarf zu erkennen. Sobald wir Zeit haben, nehmen wir Funktionen in unsere Roadmap auf. Wenn wir Ideen richtig cool finden, die simpel sind, versuchen wir diese auch dazwischen zu quetschen. Aktuell ist unsere Roadmap sehr voll und hat keine Kapazitäten für solch ein aufwendiges Modul. Sollte sich dies ändern, werden wir hier aktiv Bescheid geben.

Deswegen mein Tipp mit der PHP Library, da ich hier kurzfristig kein Vielleicht oder Ja sehe.

paresy

1 „Gefällt mir“

Danke für die ehrliche Antwort. Somit muß ich die Lösung irgendwie anders umsetzen.
Ehrlich gesagt finde ich die Idee und die Möglichkeiten mit einem integrierten SSH Client Modul aber wirklich absolut genial. :wink:
Trotzdem danke für die klare Aussage und die etwas längere Erklärung!!!

Wenn jemand eine funktionierende PHP Lösung - wichtig! - auf einem Windows System hat (mit Passwort oder Publich Key) bitte hier den genauen Syntax posten. Versuche den Windows ssh client mittels exec oder shell_exec auszuführen enden mit einem Absturz von IPS. Andere Befehle funktionieren ohne Probleme.

Versuchs mal mit Putty.exe, kann dir aber keine Syntax geben, da ich kein Windows nutze.

Habe ich. Aber aktuell nicht wirklich Zeit daraus ein Modul zu gießen. Vielleicht finde ich am Wochenende ein paar Stunden :sweat_smile:
Michael

Das wäre Mega!
Wenn’s mit dem Modul nicht klappt dann kannst Du vielleicht auch die Lösung als solches posten? Ein Modul wäre natürlich genial.
Danke schon mal…

Gruß
Christian

Hi,
Idee mit Putty sieht nicht schlecht aus:

putty -load "host" -l username -pw password

Ralf

Mit Putty hatte ich es bislang so auch am Laufen.

IPS_ExecuteEx("C:\Program Files\PuTTY\plink.exe ", "-ssh root@192.168.6.9 -pw xxxxx -batch poweroff", true, false, 2); // the "-batch" option disables the keyboard-interactive promt

Das Problem ist daß es mit IPS_ExecuteEx nicht zuverlässig läuft.
Ich meine damit daß es für etliche Tage funktioniert aber dann irgendwann der Fehler „Warning: There were no token found for specified session: 2“ kommt. Warum es mal funktioniert und mal nicht habe ich bislang noch nicht herausgefunden. Das Thema wurde auch hier schon diskutiert:

Wenn ich die Session ID -1 verwende dann funktioniert der IPS_ExecuteEx nur dann wenn ein User (z.B. via RDP) am IPS Server angemeldet ist. Mit Session ID 2 funktionierts dann mal und mal nicht. Vielleicht kennt hier jemand die Lösung.

Als Alternative zu IPS_ExecuteEx habe ich dann shell_exec und exec - leider ohne Erfolg - ausprobiert.
Dann die Vermutung daß shell_exec und exec vielleicht nicht mit Putty aber mit Windows embedded ssh funktionieren könnte. Diese Versuche endeten dann aber leider im Absturz des IPS Servers.

Das Problem ist nicht die SSH Befehle via Windows CLI erfolgreich zu senden. Die CLI Befehle funktionieren sowohl mit Putty wie auch embedded Windows SSH Client. Das Problem ist einfach „nur“ diese Befehle von IPS aus erfolgreich von Windows ausführen zu lassen. Deshalb der Wunsch nach einer IPS-Integrierten Lösung.

Habe heute paar Minuten abgezweigt und das Modul funktioniert schon mit User/Passwort. Schätze Mal Rest erst gegen Sonntag, da hier viel ansteht.
Wer testen möchte, kann mir eine PN senden, ich lade euch dann am Wochenende zum testen ein.
Michael

1 „Gefällt mir“

MEGA!
Klar das ich mich hiermit als Tester melde. :slight_smile:

Testversion ist da. Wer teilnehmen will, bitte melden :wink:
Michael

2 „Gefällt mir“

@Nall-chan ich wäre auch gerne Tester.

Hein09