nachdem ich nun stundenlang selber gesucht und nichts gefunden habe brauche ich eure Hilfe.
Da mir auf dem Raspberry die Homebridge ab und zu abschmiert will ich diese mit IPS (auf Windows Rechner) überwachen und gegebenenfalls neustarten (watchdog).
Um zu checken ob die Homebridge auf dem Pi läuft kann ich den Befehl
sudo /etc/init.d/homebridge status
nutzen und bekomme als Antwort (wenn sie läuft) „Homebridge is running PID xxxxx“.
Um diesen Befehl vom Windows Rechner auszuführen funktioniert in der Aufgabeaufforderung
"C:\Program Files (x86)\putty\plink.exe" -ssh pi@192.168.6.28 -pw raspberry sudo /etc/init.d/homebridge status
und ich bekomme wieder die Rückmeldung „Homebridge is running PID xxxxx“.
Die Ausführung von IPS aus funktioniert dann mit dem Script
Nun mein Problem: Wie komme ich an die Antwort „Homebridge is running PID xxxxx“ (um diese zb. in eine Variable zu schreiben)? Leider bekomme ich schon mit
Ist für euch Profis bestimmt nur ein Klacks, ich verzweifle daran
(Das mein Vorhaben auch mit einem Script auf dem Pi (ohne ips) geht weiß ich, will aber das ips es macht)
Ich glaube die Antwort auf die Statusanfrage kommt auch, wenn das System abstürzt. Hast du das mal geprüft?
Ansonsten hätte ich den Vorschlag, das hängenbleiben daran zu erkennen, dass ein Wert sich lange nicht geändert hat. Das könnte z.B. Ein Tempwert sein, oder ein Blinkcode einer homebridge variablen.
Nur so als Anregung.
ich habe mir bei der Installation der Homebridge ein Script aus dem Netz kopiert.
sudo /etc/init.d/homebridge status
liest den Status aus. Falls der Prozess läuft kommt „Homebridge is running PID xxxxx“. Falls der Prozess nicht mehr läuft kommt „Homebridge is not running“.
Und genau um diese Rückmeldung geht es mir, wie kann ich diese in IPS auswerten/speichern? Das gilt dann ja für alle Antworten von Linuxbefehlen.
Mit IPS_Execute wird das glaube ich nie etwas. Der Befehl gibt laut Doku immer leerstring zurück.
Also nimm doch SSH PHP: SSH2 - Manual
Und führe den Befehl darüber aus, da kannst du auch die Ausgaben der Konsole lesen.
Michael
Sooo, kann Erfolg vermelden, danke für den Hinweis.
Falls es jemanden interessiert „mein“ Skript:
<?
//SSH Login : Beginn
include('Net/SSH2.php');
// IP vom Raspberry
$ssh = new Net_SSH2('IP des Raspberrys');
//Anmeldeuser und Passwort für Raspberry nach UFT8 konvertieren
//nur mit UTF8 Einstellung klappt auch ein putty login
//ohne diese Konvertierung erscheint immer "Login Failed" auch hier per ssh->login
$username = utf8_encode( 'Benutzer kommt hier rein' );
$password = utf8_encode( 'Passwort des Benutzers' );
if (!$ssh->login($username, $password)) // Hier der echte Login
{
exit('Login Failed');
}
//SSH Login: Ende
//Befehl der auf dem Raspberry ausgeführt wird und die Antwort in $status schreiben
$status = $ssh->exec("sudo /etc/init.d/homebridge status");
//Der rückgabewert wird in die stringvarible geschrieben
SetValue(35685, $status);
?>
Wenn ihr vom IPS-Server über SSH diesen Befehl abschickt: ssh user@192.168.1.12 „df -h“
…und euch wird was angezeigt, dann könnt ihr in IPS weitermachen
Jetzt kann man direkt in IPS Befehle per Skript auf anderen Linux-Systemen absetzen
Beispiel zum Anzeigen der Speicherplatz-Belegung vom Linux-Server mit der IP „192.168.1.12“ über Benutzer „user“: