Hallo,
vielleicht hat für mich jemand einen Tip.
Ich habe IPS auf einer UBUNTU VM in Proxmox, das ganze hängt zusammen mit einer Dreammachine Pro Max an einer APC.
Die APC hängt via USB an einer QNAP.
Über IP Symcon habe ich ein Skript das die USV auswertet, das funktioniert.
Nach 3 min Stromausfall, wird ein weiteres Skript gestartet und hier hänge ich jetzt.
In diesem Skript soll die UDm Verzögert 15s runtergefahren werden und Proxmox sofort.
Ich habe es schon mal geschafft den Proxmox runterzufahren aber nie beide.
Ich versuche über keygen einen Schlüssel zu erzeugen damit ich mich aus dem Skript ohne Passwort an Proxmox und an der UDM anmelden zu können, auch glaube ich überschreibe da immer etwas.
Kann mir bei diesem speziellen Problem jemand helfen?
Es geht eigentlich nur um die Befehle aus PHP, die beiden Maschinen runterzufahren, den Rest habe ich schon geschafft.
Danke.
Wäre mir neu das PHP direkte Funktionen liefert um fremde Geräte per ??? (Netzwerk? SSH?) runterzufahren.
Aber vielleicht ist das hier etwas für dich, wenn es um SSH geht:
Doch das geht, ich konnte aus IPS schon die Dreammachine oder den Proxmox runterfahren, nur beides gleichzeitig nicht.
// IP Adresse
$NUC12IP = GetValueString(18008);
// Proxmox herunterfahren
exec(„/usr/bin/ssh root@$NUC12IP shutdown -h now“);
Es muss nur sichergestellt sein das die VM (IP Symcon) das anmelden auf beiden Systemen ohne Passwort kann, genau da hackt es bei mir.
SSH mit sogenanntem Privaten Schlüssel. Auf der Symcon Maschine
ssh-keygen -t ed25519 -C "ip-symcon"
cat dateiname.pub < wichtig die PUBlic Datei und nicht den privaten Key
Die Ausgabe dann an die Datei /root /.ssh/authorized_keys hinten dran hängen auf dem entfernten System.
Nun kannst du das in IP-Symcon mit
exec(„/usr/bin/ssh -i meinprivaterschluessel root@$NUC12IP shutdown -h now“);
ausführen.
Danke.
So ähnlich habe ich das auch gemacht.
Ich habe das gleiche Prozedure dann für meine Dreammachine gemacht, ich denke ich habe dann jedesmal den Schlüssel nue erzeugt den alten übrschrieben, deswegen konnte ich wechselweise immer nur ein system herunterfahren.
Musst schon entweder auf beiden Systemen den selben PUBLIC (öffentlich, weil den jeder sehen kann, daher durchaus eine valide Option) einspielen, oder ZWEI Schlüsselpaare erzeugen und dann halt mit dem -iParamter schluesselpaar1 und schluesselpaar2 angeben.
Dumme frage aber in deinem Ablauf schaltest du das Symcon vor der DreamMaschine aus. Wie soll Symcon dann die DreamMaschine erreichen 
Den Befehl für die UDM setze ich vor Symcon ab.
Dieser Befehl muss einen Delay von 20 s beinhalten.
Der Delay läuft dann auf der UDM.
Über ein “shutdown -h +1”
Oder
“sleep 60” gefolgt von “shutdown -h”
Ich glaube dieser war es.
$sshKey = „/home/test/.ssh/id_rsa“; // Der Key von IPS-VM-Benutzer
$cmdUDM = „/usr/bin/ssh -i $sshKey -o BatchMode=yes -o StrictHostKeyChecking=no root@$udmIP ‚nohup sh -c \„sleep 15; poweroff\“ >/dev/null 2>&1 &‘“;
exec($cmdUDM);
Aber führt das herunterfahren von Symcon nicht dazu dass die Sitzung beendet und der Sleep-befehl abgebrochen wird ?
Ein „ shutdown -h +1“ würde zwar keine 15 sek sondern eine Minuten Delay bedeuten aber einmal abgefeuert solle er das System herunterfahren auch wenn das System was es angestoßen hat vorher schon aus geht
Ich habe es leider nicht mit beiden Systemen in einem Skript testen können, weil ich mich mit den Keys blöd angestellt habe.
Mein Gedanke:
Den Befehl zuerst an die UDM übergeben, mit Zeitversatz im Befehl, der Delay läuft auf der UDM ab.
IPS_Sleep z.B. 3 s, dann Proxmox inklusive IPS runtefahren. Sollte in der Theorie funktionieren, der PMX Server und die UDM wird es mir danken, falls mal der Strom länger weg ist als meine USV kann.
Also so läuft es, getestet passt.
// IP Adresse
$NUC12IP = GetValueString(18008);
// DreamMachine IP
$udmIP = GetValueString(56175);
$proxmox = „root@“.$NUC12IP;
$udm = „root@“.$udmIP;
$key = „/root/.ssh/id_ed25519“;
// UDM mit 15 Sekunden Verzögerung
exec(„/usr/bin/ssh -i $key -o StrictHostKeyChecking=no -o BatchMode=yes $udm ‚sleep 15 && shutdown -h now‘“);
sleep(1);
// Proxmox sofort herunterfahren
exec(„/usr/bin/ssh -i $key -o StrictHostKeyChecking=no -o BatchMode=yes $proxmox ‚shutdown -h now‘“);
// Timer deaktivieren
IPS_SetScriptTimer($_IPS[‚SELF‘], 0);