probleme mit automatischen win-updates und des "abwürgens" von fhem.

Begonnen von the ratman, 11 Februar 2022, 10:42:39

Vorheriges Thema - Nächstes Thema

the ratman

hiho,

die vorgeschichte:

mein win10-server, der in einer vm ein debian mit fhem betreibt, hat sich heute früh selbstständig geupdated. normal mach ich sowas "händisch" und fahre erst mal fhem runter, bevor ich den server reboote. hab diesmal nur länger nicht am server geschaut ...
nach dem hochfahren hat fhem scheints mehrere stunden an infos verloren. das gute stück war auf tagbetrieb, hat mir rollos gesetzt, die nachtreinigung meines saugbots widerholt, ... war ne interessante zeit *g*.

die fragen:

1) gehe ich richtig in der annahme, das fhem für solche fälle eigentlich die "eventTypes.txt" hat, in der regelmäßig die zustande meiner geräte gespeichert werden und wann wird da was gespeichert?
und kann man das speichern der "eventTypes.txt" auch "händisch" anwerfen, damit man z.b. regelmäßiger oder zeitbezogen speichern kann.

2) an die win-profis: kann ich in fhem feststellen (ich hab z.b. winconnect am server laufen), wann win10 nicht nur ein update macht, sondern nach einem neustart verlangt?
damit könnte ich dann nämlich automatisiert und ohne unfälle die kiste aus fhem updaten.
→do↑p!dnʇs↓shit←

rudolfkoenig

Ad 1)
eventTypes.txt dient mW hauptsaechlich irgendwelchen Wizards, die damit eine Liste aller moeglichen device/Event Kombinationen kennen, so dass man diese aus einer Liste auswaehlen kann.

Was Du suchst ist das statefile (attr global statefile), die bei save mitgesichert wird.
Beim Herunterfahren eines Unix Systems (via shutdown Befehl) wird allen Prozessen erst ein TERM Signal zugestellt.
Nach eine Weile wird alles, was noch nicht weg ist, beendet.
Beim Empfang vom TERM speichert FHEM erst das Statefile, und beendet sich danach.
Offensichtlich haelt sich ein Windows-Update nicht an die Unix-Regel.

Otto123

naja ich denke Windows hat die VM einfach in eine Art cold standby geschickt und nach dem neustart nicht wieder aufgeweckt. Nach dem aufwecken muss erstmal die Zeit wieder gestellt werden usw. Ich denke am Besten wird sowas verhindert in dem man automatische Updates komplett verhindert. Windows macht einem dies aber nicht leicht :)
Ob man da mit winconnect was machen kann weiß ich nicht. Ich würde mir wahrscheinlich mit ssh und powershell was bauen.

Das Windows der VM Signale für Neustart des System durchreicht usw. ist eigentlich machbar.
"Normal" ist meist das der Zustand der VM für den kurzen Zeitraum des Neustarts einfach eingefroren wird und die VM anschließend wieder aktiviert wird.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

the ratman

#3
thx ihr 2, für eure infos!

die vm ist von oracle - vielleicht hilfts ja beim ideen finden.
zumindest rennt aber mal "statefile ./log/fhem.save"

ich weiß leider nicht, ob und wo win eine neustart-aufforderung ablegt. weil dann könnte ich eben schön automatisch mit fhem drauf reagieren. dafür hab ich schon ein doif:
( [$SELF:reboot] eq "ja" )
( say server neustart )
( set luke7_winconnect command shutdown /r /t 20 )
( "sudo halt" )


wenn es die info in win wo abrufbar gibt, weiß ich aber auch nicht, wie ich eventuelle infos zw. "normalem update" und "neustart ist nötig" unterscheiden kann. ich muss die hütte ja ned wegen jedem virenupdate neu starten ...

nachtrag: könnte was werden: https://www.windowspro.de/script/installierte-updates-remote-anzeigen-powershell
winconnect kann mir da vielleicht ein reading draus machen ... fehlt nur mehr die info, ob er neu starten will.


wie hört sich momentan mal der workaround an?
das statefile anwerfen. am besten um mitternacht oder 1 uhr. scheinbar macht win seine updates immer so zw. 1 und 2 nachts. wenn ich da in fhem wenigstens meinen tag/nacht-, reinigungsstatus-status, usw. sicher hab, dann kann schon nicht mehr viel passieren.

die frage ist dann also einfach (weil ich nicht wirklich was bei onkel google finde): wie lautet der befehl um das statefile zu aktualisieren, ohne fhem runterfahren zu müssen?
→do↑p!dnʇs↓shit←

Otto123

Zitatwenn es die info in win wo abrufbar gibt, weiß ich aber auch nicht, wie ich eventuelle infos zw. "normalem update" und "neustart ist nötig" unterscheiden kann. ich muss die hütte ja ned wegen jedem virenupdate neu starten ...
Wenn man die automatischen Updates verhindert (ich such Dir was raus) dann laufen die Antivirenupdates trotzdem, das sieht zwar manchmal direkt gleich aus sind aber unterschiedliche Wege.
gesucht und gefunden : Windows Update
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

the ratman

ich will definitiv nicht das automatische updaten ausschalten - bei meinem chaos schaut der server sonst in 10 jahren bit für bit wie heute aus *g*
und ehrlich: ich bin immer noch kein bastler oder gar admin - mir macht so zeugs sowas von derartig keinen spaß.
das soll nur laufen, ohne dass ich mich drum kümmern muss.

ich brauch - primitiv: einfach nur ne info, dass das ding meine aufmerksamkeit will.
die schönere variante wäre natürlich, wenn sich fhem drum kümmern würde. und da würd mir ja "nur" noch das wissen fehlen, wo ich die info abgreifen kann. kann doch ned sein, windoof ist ja sonst auch so derartig nervig mitteilsam.

ich find nur weiterhin nix zu anstehenden updates und/oder neuestarts - immer nur die dämlichen infos, was schon upgedatet ist.
→do↑p!dnʇs↓shit←

rudolfkoenig

Vermutlich ist in diesem Fall
define saveState at +*00:10 {WriteStateFile()}
eine einfache und pragmatische Loesung.

tobi925

Hallo Ratman,
wenn du Hyper-V einsetzt setze mal die Option "Gast herunterfahren" in deiner VM.
Dann fährt dein Linux beim Reboot von Windows sauber runter und dein Fhem auch.




LuckyDay

Zitat von: rudolfkoenig am 11 Februar 2022, 15:18:00
Vermutlich ist in diesem Fall
define saveState at +*00:10 {WriteStateFile()}
eine einfache und pragmatische Loesung.

Typo bei  Rudis Beispiel

Zitatdefine saveState at +*00:10 {WriteStatefile()}

Otto123

Zitat von: tobi925 am 11 Februar 2022, 15:36:03
Hallo Ratman,
wenn du Hyper-V einsetzt setze mal die Option "Gast herunterfahren" in deiner VM.
Dann fährt dein Linux beim Reboot von Windows sauber runter und dein Fhem auch.
nimmt er aber nicht, er hat Oracle - hat er doch geschrieben.
@ratman ich schau nach ob ich ne Idee habe für Benachrichtigung ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

the ratman

wow! vielen, vielen dank an euch alle!!!

ich hab jetzt mal den at aktiviert. alle 10 min. sollten ja wirklich reichen *g* ich hab aber mal die lösung mit dem "f", also "define saveState at +*00:10 {WriteStatefile()}" genommen.
jetzt kann man ja in ruhe mal ne lösung finden, die auch wirklich elegant ist. da wett ich ja schon fast auf otto.
wmi wäre echt geil. aber das ist schon wünschen auf hohem niveau.
→do↑p!dnʇs↓shit←

enno

Zitat von: the ratman am 11 Februar 2022, 20:49:57
jetzt kann man ja in ruhe mal ne lösung finden, die auch wirklich elegant ist
Ich bin auch gespannt, Windows und FHEM in einer VM klingt mir nicht danach, dass man dass überhaupt elegant machen kann ;) Das klingt mir eher nach, "ich will leiden..." Ich hätte ja eher den Reflex Windows in der VM auf einem Linux System zu starten.

Hier hat einer ein Script gebaut um VM runterzufahren vor dem Reboot: https://forums.virtualbox.org/viewtopic.php?f=6&t=64741

You can actually start a VM headlessly without resorting to a third-party VBoxVmService now. Just create a shortcut to <VirtualBoxDirectory\VBoxManage.exe> startvm "vmname" --type headless and put that in your startup folder.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

Otto123

Ein paar Infos zusammengetragen:
Es gibt ein Powershell Modul https://www.powershellgallery.com/packages/PSWindowsUpdate/2.2.0.2
Das liefert ein paar Funktionen, mit Get-WURebootStatus -Silent erhält man den notwendigen Reboot Status.
Ich habe mal ein PowershellScript gemacht, damit kann man von Windows über HTTP auf FHEM zuzugreifen.
Ein bisschen kombinieren und Du hättest ein Reading in FHEM.
Wäre es was?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

the ratman

@enno
ich leide eher unter linux *g* sobald du da was ernsthaftes machen musst, brauchst ahnung ... hab ich ned. bei win kann ich mir wenigstens ansatzweise helfen.
und ehrlich gesagt: fhem in der vm rennt eigentlich jetzt locker 3 oder 4 jahre stressfrei. man darf halt nur ned vergessen, wenigstens an update-dienstagen von m$ das ding zu streicheln.

soweit ich das bei meiner lösung sehe, wird die vm eh brav, wie jedes andere programm auch, von windows beendet, bevor ein reboot kommt. die vm scheint aber linux nix davon erzählen zu wollen. ist aber nur meine laienhafte sicht der dinge.
ich werd sowieso nicht drum rum kommen, die wsl2 wieder mal zu probieren. das gäbe wesentlich weniger probleme. otto spielte sich da ja auch mal mit. aber die lust und die zeit ...


@otto
hört sich zumindest mal wie die bisher beste lösung an. vor allem die http-lösung. weil powershell direkt von anderen geräten weg, mag zumindest bei mir ned so wirklich funzen. hab da wohl irgendwo ein bissi zu viel netzwerksicherheit mal eingerichtet ...
wenn du da also was bastelst, werd ich eindeutig nicht nein sagen *g* und ich hoff halt, dass das dann auch andere brauchen können, damit ich mir ned gar so nach "ausnutzer" vor komm.
→do↑p!dnʇs↓shit←

Otto123

Zitatdie vm scheint aber linux nix davon erzählen zu wollen. ist aber nur meine laienhafte sicht der dinge.
Hast in der VM die Tools installiert?
Die heißen bei V Box glaub ich Guest Additions oder so.
Ob das aktuell ist weiß ich nicht
https://linuxize.com/post/how-to-install-virtualbox-guest-additions-on-debian-10/
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

the ratman

nö, dachte eigentlich immer, dass sind nur helferleins für den desktop.
hab nur das extension-pack installiert - wegen usb usw.
→do↑p!dnʇs↓shit←

Otto123

Ich meine diese Tools senden den Shutdown an die VM beim Shutdown des Hosts. Kannst Du dir ja mal anschauen.

Falls Du testen magst. Das wäre das setup:
powershell als Administrator öffnen! Deine HostAdressse musst Du eintragen, entweder minimal oder komplett. Beispiel ist im Code

$fhemhost='[http://[user:password@]hostname:]portnumber'

Machs schön Zeile für Zeile
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Install-Module -Name PSWindowsUpdate -Force
Import-Module PSWindowsUpdate
New-Item -Path c:\Tools\Scripts -ItemType Directory -Force
wget -OutFile c:\Tools\Scripts\fhemcl.ps1 https://raw.githubusercontent.com/heinz-otto/fhemcl/master/fhemcl.ps1
$fhemhost='http://raspib3:8083'
"define WindowsUpdate dummy" | c:\Tools\Scripts\fhemcl.ps1 $fhemhost

Jetzt Status abfragen und schreiben, das müsste man dann in der Aufgabenplanung verankern - oder ...
Get-WURebootStatus -Silent | % {"setreading WindowsUpdate RebootStatus " + $_ } | c:\Tools\Scripts\fhemcl.ps1 $fhemhost

Wenn Du wissen willst ob es geklappt hat (wenn bisher keine Fehlermeldung kam)
"list WindowsUpdate"| c:\Tools\Scripts\fhemcl.ps1 $fhemhost
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

the ratman

ich mag testen, ja - kann aber n paar tage dauern, sonst gobts wieder bratpfanne auf meine birne, weil die kodis auf dem server ihre db haben.
→do↑p!dnʇs↓shit←