SYSMON seltsamer Eintrag im Log

Begonnen von eddy242, 10 März 2020, 19:43:32

Vorheriges Thema - Nächstes Thema

Benjamin50

#15
Hallo

pi@debianfhem:~$ free -V
free from procps-ng UNKNOWN


In der Fhem Kommandozeile kommt

free from procps-ng UNKNOWN


frank

free from procps-ng 3.3.12
so sieht das bei mir aus.

ist dein os up to date?

als "würgaround" könntest du zb vor zeile 2269 eine zeile einfügen:

$free_version = 340 if($free_version eq "");

dann natürlich "attr global exclude_from_update" entsprechend setzten, damit sysmon nicht überschrieben wird.

anschliessend save und neustarten.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

welches os hast du eigentlich, dass dort version "unknown" angezeigt wird?
debian buster, oder etwas exotisches?
auf welcher hardware?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Benjamin50

Hallo,
Habe ein wenig im Netz gesucht aber auch nichts gefunden, warum das so ist weiß ich nicht.
Das System läuft sonst ganz rund.

Ich werde dein Workaround eintragen und Beobachten.
Vielen Dank für die Unterstützung

mfg
wolfgang


Motherboard ASRock Q1900M
Processor      Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
Memory         8GiB System Memory
Linux Buster 5.4.0-4-amd64 x86_64

eddy242

Hallo zusammen,

ich würde gerne die lebhafte Diskussion nutzen, um nochmals kurz auf Post #1 einzugehen. Die Situation ist so, dass SYSMON per ssh eine Remoteabfrage auf 2 verschiedene QNAP NAS Systeme macht. Im Terminal macht free dort folgende Ausgaben. Beide free-Versionen von busybox unterstützen weder -v noch -w.
QNAP älteres Modell

[~] # free
              total         used         free       shared      buffers
  Mem:       255596       233140        22456            0         3468
Swap:       530124       233440       296684
Total:       785720       466580       319140
[~] # free -w
BusyBox v1.01 (2020.01.08-18:26+0000) multi-call binary

Usage: free

Displays the amount of free and used system memory

[~] #   


QNAP moderneres Modell

[~] # free -w
BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.

Usage: free [-b/k/m/g]

Display the amount of free and used system memory
[~] # free
             total       used       free     shared    buffers     cached
Mem:      15371348   14295156    1076192      73732     340192    6607648
-/+ buffers/cache:    7347316    8024032
Swap:     24542452    2732312   21810140
[~] # free -v
BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.

Usage: free [-b/k/m/g]

Display the amount of free and used system memory
[~] #                       


Otto123

#20
Ich hätte da vielleicht einen "bösen" Hack:
Idee: Man packt ein alternatives free in einen Pfad aus dem Suchpfad:
echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin

free liegt in /usr/bin (which free)

Den folgenden Script Code kann man einfach in die Kommandozeile fallen lassen, der erzeugt mit "hereDoc" das Script und macht es ausführbar.
free="/usr/sbin/free"
cat <<EOF > $free
#!/bin/sh

if [ "\$1" = "-V" ]
then
   echo "free from procps-ng 3.3.9"
else
   /usr/bin/free
fi
EOF
chmod +x $free


Danach muss man sich neu anmelden um die Hash Table der Shell neu zu erstellen.
Test mit which free
free -V liefert ab sofort einen Rückgabe Wert und ansonsten die normalen Werte.

Das ganze bleibt bei busybox nicht dauerhaft - ich weiß  :-X

Besser wäre der Hexenmeister ruft seine Besen :)

Gruß Otto
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

frank

etwas einfacher sollte folgendes funktionieren:

folgende zeile für eddy hinter zeile 2267 einfügen:
  $free_version = 339 if($free_version !~ m/^free\sfrom\sprocps-ng/);


wenn der command "free -V" existiert und am anfang immer "free from procps-ng" zurückliefert, könnte für alle der code so aussehen (mit den 2 ausnahmen für benjamin und eddy):

  my $free_version = SYSMON_execute($hash, 'free -V');
  $free_version = 339 if($free_version !~ m/^free\sfrom\sprocps-ng/);
  $free_version =~ s/\D//g;
  $free_version = 340 if($free_version eq "");
  my @speicher = SYSMON_execute($hash, 'LANG=en ' . ($free_version > 339 ? 'free -w' : 'free'));


unter der voraussetzung, dass alle versionen die "UNKNOWN" als versionsnummer liefern auch den command "free -w" beherschen.


bei mir kommt die "echte" version (3312) jedenfalls noch durch.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

eddy242

Hallo Frank,

vielen Dank - hab's ausprobiert und die angegebene Zeile ins Modul aufgenommen, FHEM neu gestartet:


BusyBox v1.24.1 (2020-02-14 03:15:41 CST) multi-call binary.

Usage: free [-b/k/m/g]

Display the amount of free and used system memory
2020.03.25 00:15:32 1: PERL WARNING: Use of uninitialized value $free_version in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2268.
BusyBox v1.01 (2020.01.08-18:26+0000) multi-call binary

Usage: free

Displays the amount of free and used system memory

2020.03.25 00:15:35 1: PERL WARNING: Use of uninitialized value $free_version in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2268.

eddy242

Und noch ein Nachtrag, ich glaube da gab's ein paar Nebenwirkungen:

2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|1|#|4|#|1|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|3|#|5|#|.|#|2|#|5|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|1|#|6|#|3|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|4|#|0|#|.|#|7|#|5|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|1|#|7|#|9|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|4|#|4|#|.|#|7|#|5|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|2|#|0|#|5|#|2|#|.|#|0|#|0|#|" isn't numeric in numeric lt (<) at ./FHEM/42_SYSMON.pm line 1476.
2020.03.25 08:30:40 1: PERL WARNING: Argument "|#|5|#|1|#|3|#|.|#|0|#|0|#|" isn't numeric in multiplication (*) at ./FHEM/42_SYSMON.pm line 1477.

Otto123

@Eddy242 hast Du meinen Trick mal probiert? Würde mich interessieren ob das so einfach auch woanders geht. ;)
Auch wenn es eine schräge Lösung ist :)
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

Wernieman

Warum ist es schräg .. habe es beruflich schon mit anderen Kommandos machen (müssen)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

eddy242

Hallo Otto123,

habe es mit Deinem Workaround gefixt, allerdings mit ein paar Änderungen.
1) Script ohne den \ im Parameter
[~] # cat /sbin/free
#!/bin/sh

if [ "$1" = "-V" ]
then
   echo "free from procps-ng 3.3.9"
else
   /opt/free
fi

2) habe ich das "script" free in einen folder gesteckt, der im Pfad eigentlich vor /usr/bin/ aufgerufen werden sollte. Das funktionierte aber nicht obwohl "which free" das richtige ausgegeben hat. daher habe ich das busybox-free nach /opt verschoben. Ich nehme an dass das beim nächsten system-update oder schlimmer noch beim nächsten reboot wieder durch den update- bzw- QNAP Reparaturmechanismus gefixt wird. Da ich beides (Update und Reboot) aber eher im 2-3 Monatsrhythmus mache, ist es als Workaround verschmerzbar.

Generell wäre es natürlich Klasse, wenn SYSMON auf das busybox-free reagieren könnte, was den -V Parameter nicht kennt.

frank

ich hatte vermutet, dass die "busybox"-meldung in der variable $free_version steckt. leider nicht.

ich habe jetzt bei mir mit einer nicht vorhandenen free-option getestet. die warnung konnte ich zwar verhindern, aber die "busybox"-meldung bleibt.

dann wäre das sinnvollste für eddy, den "free -V" befehl zu verhindern.
zb zeile 2267 verändern/ersetzen mit

my $free_version = 339;
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

eddy242

#28
Hallo Frank,

das ist vielleicht keine ideale Lösung, denn auf meinen RaspPis ist ja eine gescheite Shell, wo free -V eine Version ausgibt. die buysbox ist nur auf den QNAP NAS Geräten.

Wenn ich in meinem lokalen fhem den offziellen Modulcode ändere, hätte ich natürlich das gleiche Problem beim nächsten SYSMON-Update - müsste die Änderung wieder manuell nachziehen.

Eine dauerhafte Lösung wäre vielleicht ein Attribut (isBusyBox =1), was der Modulcode abfragen könnte um dann zu entscheiden?

frank

genau, ein attribut wäre wohl am besten.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html