Guten Morgen,
ich hätte hier ein Problem anzubieten bei dem ich persönlich (Trotz intensiver Google- und Forums-Recherge) nicht mehr weiterkomme.
- Meine Fhem-Installation läuft im Docker - bisher reibungslos
- Bis vor kurzem (evtl. nach einem Update?) wurden die Logfiles klaglos in einen Grayöog-Stack übermittelt
- Der entsprechende Aufruf: define syslog_client Log2Syslog 192.143.143.136 ident:Fhem_Server fhem:.*
- Heute Morgen ist mir aufgefallen das keine Logs mehr dort ankommen
- Folgende Fehler steht im fhem-Log: Bad regexp: Undefined subroutine &main::SYS_getdomainname called at /usr/share/perl/5.28/Net/Domain.pm line 158.
- Die Eingabe von {hostname()} bringt folgenden Fehler: 1: ERROR evaluating {hostname()}: Undefined subroutine &main::hostname called at (eval 2107) line 1.
- Die Eingabe von hostname auf der Shell zeigt mir jedoch: 0d1eeef4d221
Jetzt Stellt sich mir die Frage: Bin ich nur zu doof? Oder liegt hier ein Fehler vor?
Über Hilfe oder Hinweise würde ich mich sehr freuen - sollte das Thema woanders hingehören, sorry.
VG
Thorsten
Zitat von: smeagel am 07 November 2020, 07:12:03
- Die Eingabe von {hostname()} bringt folgenden Fehler: 1: ERROR evaluating {hostname()}: Undefined subroutine &main::hostname called at (eval 2107) line 1.
Und die Eingabe von {Log2Syslog::hostname()} und von {Net::Domain::hostname()} ?
Verschiebe ggf das Thema im Subforum wo Log2Syslog betreut wird: Automatisierung
Knopf unten links
Beim anlegen via: define syslog_client Log2Syslog 192.168.168.136 ident:Fhem_Server fhem:.*
kommmt folgender Logeintrag:
2020.11.07 09:11:52 1: define syslog_client Log2Syslog 192.168.168.136 ident:Fhem_Server fhem:.*: Bad regexp: Undefined subroutine &main::SYS_getdomainname called at /usr/share/perl/5.28/Net/Domain.pm line 158.
Beim ausführen von: {Log2Syslog::hostname()} und von {Net::Domain::hostname()}
kommmt folgende Meldung:
Undefined subroutine &Log2Syslog::hostname called at (eval 5553) line 1.
Hallo Thorsten,
der Fehler liegt außerhalb von FHEM. Hier versucht eine Standard Perl Lib (/usr/share/perl/5.28/Net/Domain.pm) die Routine SYS_getdomainname aufzurufen, was bisher ja offensichtlich funktionierte.
Hier geht es runter auf Betriebssystemebene. Ich vermute ganz stark es gab ein Update des Dockercontainers/Betriebssystems.
Wenn du hostname testen willst, mußt du es so aufrufen:
{ Net::Domain::hostname() }
Bei mir wird mit dem Aufruf z.B. "fhemtest" geliefert.
Das hat nichts mit dem Shell hostname zu tun.
Genauso sollte funktionieren:
{ Net::Domain::hostdomain () } -> liefert die Domain
{ Net::Domain::hostfqdn () } -> liefert den voll qualifizierten Hostnamen mit Domain
Mehr kann ich dir allerdings auch nicht helfen, kenne mich mit Docker nicht aus.
Doch ich denke in diesem Umfeld wäre zu suchen.
ZitatBeim ausführen von: {Log2Syslog::hostname()}
Kann nicht gehen. Die Routine hostname() gibt es in Log2Syslog nicht, sondern ist in der Library Net::Domain enthalten.
Hi,
{ Net::Domain::hostname() } liefert mir "0d1eeef4d221" - also den korrekten Hostnamen.
{ Net::Domain::hostdomain () } liefert nichts
{ Net::Domain::hostfqdn () } liefert " 0d1eeef4d221"
Das Docker-Image baue ich selbst - da gab es von mir keine Änderungen.
Ich finde es nur merkwürdig das dieses Verhalten erst seit zwei Tagen auftritt.
VG
Thorsten
Ja merkwürdig ist sowas.
Was auch noch benötigt wird ist eine Library "syscall.ph". Die wiederum wird von /usr/share/perl/5.28/Net/Domain.pm eingebunden.
Vielleicht fehlt die (gelöscht ?). Such mal danach.
Ansonsten wohl mal Google bemühen ...
Hi,
erstmmal ganz großen Dank an alle die versucht haben mir zu helfen - Phänomenaler Support.
Feedback:
Ich habe leider KEINE Ahnung warum - aber es scheint wieder zu gehen.
Die Logs werden plötzlich wieder in den Graylog-Stack geschrieben.
Ich habe NICHTS (außer den Port auf 1514 zu stellen) geändert.
Komisches Phänomen - aber ist wahrscheinlich manchmal so. :o
VG
Thorsten
Wo sollte die syscall.ph zu finden sein?
ZitatWo sollte die syscall.ph zu finden sein?
Irgendwo in den Pfaden die geliefert werden mit:
{return join ",", @INC }
Schön das es wieder geht, gut wäre natürlich die Ursache zu kennen. Vieleicht bekommst du noch etwas raus.
ZitatIch habe NICHTS (außer den Port auf 1514 zu stellen) geändert.
Welchen Port hast du denn vorher benutzt ?
syscall.ph ist vorhanden.
ja, seltsam - wüsste aber nicht wo ich suchen soll oder wie uch den Fehler reproduzieren könnte.
Vorher wurde der Standard-syslog-Port 514 verwendet
VG
Thorsten
Daran ist jetzt auch nichts ungewöhnliches ... nun ja ...