Hauptmenü

[gelöst] Host shutdown

Begonnen von franky08, 11 August 2024, 20:33:29

Vorheriges Thema - Nächstes Thema

franky08

Problem:

Hostrechner auf dem fhem läuft runterfahren.

Hintergrund ist das mir schon zwei ZBOX nano Rechner mit Debian Bookworm und mit Debian Bullseye durch einen Stromausfall kaputt gegangen sind (SATA Controller bei Beiden Rechnern). Die Rechner hängen zwar an einer USV aber wenn niemand da ist hat sich das mit der USV auch irgendwann erledigt da der Akku runter ist. Die USV hängt an einem "HM Zwischenstecker mit Leistungsmessung", Die Überlegung ist die Spannung zu überwachen und wenn diese unter 180V geht oder der HM Aktor nicht mehr erreichbar ist (passiert ja dann wenn der HM Aktor selbst keine Versorgungsspannung mehr hat) den Rechner runter zu fahren.
Dafür dachte ich gebe mit:

nano /etc/passwd
fhem /bin/bash

damit sollte ein Login an der Bash Shell möglich sein. Mit visudo noch dem user fhem:
fhem ALL=NOPASSWD:/sbin/shutdown
Ich habe auch probiert in fhem mit:

su - fhem
mkdir .ssh & cd .ssh
ssh-keygen -t rsa

und dann:
ssh-copy-id -i /opt/fhem/.ssh/id_rsa.pub root@IP Adresse vom Host
ein key Paar zu erzeugen und diesen auf den Host zu kopieren. Beim testen mit:

{ system("ssh 192.168.2.31 'sudo shutdown -h now'") }
bekomme ich im Log:
fhem@192.168.2.31: Permission denied (publickey,password)
In Linux bin ich leider nicht so die helle Kerze und muss mir solche Dinge zusammensuchen aber jetzt komme ich wohl nicht weiter.
Aber leider fehlt da wohl noch was, so einfach scheint es nicht zu sein. Kann mir da jemand weiterhelfen?

LG
Frank
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

binford6000

{ system("ssh 192.168.2.31 'sudo shutdown -h now'") }
Du musst schon auch einen Benutzer (root da du den auch bei ssh-copy-id genutzt hast) mitgeben. Und bei root benötigst du dann auch kein sudo:

{ system("ssh root@192.168.2.31 'shutdown -h now'") }
VG Sebastian

franky08

#2
Hatte ich schon probiert, aber:
ssh: Could not resolve hostname root.168.2.31: Name or service not known
seltsam ist das der Aufruf root@192.168.2.31 lautet aber im Log:

root.192.168.2.31
steht, das stimmt ja dann nicht. Vlt muss das maskiert werden?
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

Das maskieren war es, da hatte mir vorhin wahrscheinlich schon zu sehr der Kopf geraucht.
So geht´s:

{ system("ssh root\@192.168.2.31 'shutdown -h now'") }
Und schon geht er down!
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

Hier mal eine Zusammenfassung, falls es jemand mal braucht:
1-     nano /etc/passwd
        /bin/false auf /bin/bash ändern

    2-    su – fhem ---->zu Benutzer fhem wechseln

    3    mkdir .ssh
        cd .ssh
        ssh-keygen -t rsa
        ssh-copy-id -i /opt/fhem/.ssh/id_rsa.pub root@IP vom Host

    4    visudo
        #User  alias specification
        fhem ALL=NOPASSWD:/sbin/shutdown

    5    { system("ssh root\@IP Host `sudo shutdown -h now`") } damit fährt der Host runter      

VG
Frank
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

MadMax-FHEM

Der Eintrag in der sudoers für fhem ist unnötig bzw. nur notwendig, wenn du den Rechner runter fahren willst, auf dem fhem läuft.

Du loggst dich aber ja als root woanders ein und fährst dort runter...

Allerdings ist norm. unter Linux root Login unterbunden...
Dass das bei deinem entfernten Rechner geht ist also eher die Ausnahme oder man muss es (dort) explizit erlauben...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

franky08

#6
Zitat"Der Eintrag in der sudoers für fhem ist unnötig bzw. nur notwendig, wenn du den Rechner runter fahren willst, auf dem fhem läuft."

Genau den will ich runterfahren, der auf dem fhem läuft, ist schon OK so .-)

Jetzt suche ich nur noch wie ich auswerten kann das de HM Leistungsmesser nicht mehr online ist, also der Strom weg ist. Die Spannung auszuwerten ist kein Problem aber wenn keine Netzspannung mehr da ist, reagiert der HM Aktor ja auch nicht mehr und liefert keine Readings, Da bin ich gerade dran.Ob CMD´s done ist oder != CMDs_done lässt sich nicht in ein Reading packen, da suche ich noch was man auswerten kann. Dachte mit einem at alle 2min das Reading commState abzufragen, dass funktioniert aber nicht...
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

MadMax-FHEM

Aber wenn du den runter fahren willst, auf dem fhem läuft, warum dann ssh root@IP ?

Oder sind es 2 Systeme, die du runter fahren willst?

Dann will ich nix gesagt haben ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

ActionDetector sollte das mitbekommen.
Evtl das Attribut actCycle anpassen, damit es schnell genug erkannt wird...
Der meldet "dead" und da dann ein notify...

Sofern HM mittels CUL_HM und nicht HMCCU...

ReadingsWatcher (wenn das der aktuelle Name ist) sollte auch gehen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

franky08

#9
Zitat:
"Aber wenn du den runter fahren willst, auf dem fhem läuft, warum dann ssh root@IP ?

Oder sind es 2 Systeme, die du runter fahren willst?"

Das mit ssh root\@ ist aus der "Historie" entstanden, als ich auf dem Test Raspi System angefangen habe damit zu experimentieren  :)
Sollte dann irgendwann mal den zweiten Rechner auch mit runter fahren. Der User Root hat eben mal alle Rechte und um mir da kein Ei mit den Rechten zu legen, habe ich den User root dafür genommen.

Das mit dem ActionDetector ist ein guter Tipp, kam mir immer so langsam vor aber ich muss mal nachsehen was bei actCycle für ein Wert steht.

ActionDetector muss wohl actCycle größer 10 min haben, wollte es mit zwei min probieren, dass kann man aber nicht so niedrig einstellen

VG
Frank
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

MadMax-FHEM

2min ist aber u.U. sehr knapp. Ich weiß nicht auf welche Readings ActionDetector reagiert, nicht, dass du dann dauernd Shutdowns hast ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: franky08 am 12 August 2024, 08:10:09Der User Root hat eben mal alle Rechte und um mir da kein Ei mit den Rechten zu legen, habe ich den User root dafür genommen.
Trotzdem hat es schon seinen Grund, warum root Login erst mal nicht erlaubt ist bei Linux...

2-stufig wie beim fhem Rechner auch.

Also passwortloser ssh-Zugang (bruachst/hast du ja schon) aber halt nicht gleich mit root, sondern einem norm. User, der aber sudo kann.
Für den dann passwortlosen Shutdown.

Und dann wie folgt:

{ system("ssh user\@IP Host `sudo shutdown -h now`") }

Weil dann ist das sudo auch nicht "nutzelos" ;)

Ist sicherer, weil mit generellem root-Login kann "man" halt alles machen.
So kann "man" max. Dinge tun, die ein User tun kann und eben noch runterfahren...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

yersinia

Ich werf' mal noch eine andere Idee ein: wieso überwachst du die USV nicht zB via NUT und führst dann Aktionen auf OS Ebene aus? Es gibt eine Kompatibilitätsliste; vlt wird deine USV unterstützt!?

Dafür gibt es sogar ein FHEM Modul.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

franky08

#14
Ich habe mir gerade selber was gebaut um das Stromnetz zu überwachen. Ganz einfach ein Steckernetzteil an einem Relais und der Schaltausgang vom Relais an einen umgebauten ThreeStateSensor (Kontakte rausgeführt), ist die Spannung weg schaltet der Fensterkontakt und das kann man dann auswerten.

Du darfst diesen Dateianhang nicht ansehen.
Debian Bookworm auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
mit FHEM aktuell (fhem.pl:28849/2024-05-07)
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...