Fehlermeldung Blocking.pm line 105

Begonnen von rogseut, 26 September 2015, 16:54:26

Vorheriges Thema - Nächstes Thema

rogseut

2015.09.26 16:49:38 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Blocking.pm line 105.
2015.09.26 16:49:38 1: CallBlockingFn: Can't connect to localhost:: IO::Socket::INET: Bad hostname 'localhost:'

Das Interessante dabei ist es tritt genau alle 60s ein und wiederholt sich.

Hab schon hier im Forum gesucht jedoch keine Lösung gefunden.
Anscheinend soll das was mit der Telnet Verbindung sein, leider versteh ich davon zu wenig,

Kann mir hier jemand helfen?

rogseut


rogseut

#2
2015.09.26 18:16:46 5: SYSMON sysmon: Exec_Local.4092 Result '$VAR1 = 'Filesystem     1M-blocks  Used Available Use% Mounted on
';
$VAR2 = '/dev/root           5703  5296        96  99% /
';
'
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2566 recieved 2 lines
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2583 recieved line0 Filesystem     1M-blocks  Used Available Use% Mounted on

2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2602 analyse line /dev/root           5703  5296        96  99% /
for /
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2611 pattern (/) found
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2617 use line /dev/root           5703  5296        96  99% /

2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2550 get fs_usb1:/media/usb1:USB-Stick
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2561 exec df /media/usb1 -m 2>/dev/null
2015.09.26 18:16:46 5: SYSMON sysmon: Exec_Local.4087 Execute 'df /media/usb1 -m 2>/dev/null'
2015.09.26 18:16:46 5: SYSMON sysmon: Exec_Local.4102 Result undef
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2566 recieved 1 lines
2015.09.26 18:16:46 5: SYSMON sysmon: getFileSystemInfo.2586 recieved empty line
   2015.09.26 18:16:46 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/Blocking.pm line 105.
   2015.09.26 18:16:46 3: stacktrace:
   2015.09.26 18:16:46 3:     main::__ANON__                      called by /opt/fhem/FHEM/Blocking.pm (105)
   2015.09.26 18:16:46 3:     main::BlockingInformParent          called by /opt/fhem/FHEM/Blocking.pm (92)
   2015.09.26 18:16:46 3:     main::BlockingCall                  called by /opt/fhem/FHEM/42_SYSMON.pm (898)
   2015.09.26 18:16:46 3:     main::SYSMON_Update                 called by fhem.pl (2683)
   2015.09.26 18:16:46 3:     main::HandleTimeout                 called by fhem.pl (583)
   2015.09.26 18:16:46 1: CallBlockingFn: Can't connect to localhost:: IO::Socket::INET: Bad hostname 'localhost:'
2015.09.26 18:16:49 5: Triggering powermonitor (4 changes)
2015.09.26 18:16:49 5: Notify loop for powermonitor Leistung_X1: 28.62
2015.09.26 18:16:49 5: Messwerte: not on any display, ignoring notify
2015.09.26 18:16:55 5: exec at command Time_Update
2015.09.26 18:16:55 5: Cmd: >{ fhem 'set fp_Time '.strftime('%Y-%m-%d     %H:%M', localtime) }<



Die Wichtigen Zeilen hab ich mal eingerutscht.

Kommt das vom SYSMON??

rapster


rogseut

Du meinst das hier?

Ist bereits drin.

#---------------------------------
#--        telnetPort           --
#---------------------------------
define telnetPort telnet 7072 global
attr telnetPort SSL 1

LuckyDay

Zitatattr telnetPort SSL 1

wen wundert es ,

rogseut

selbe Problem auch bei SSL 0
schon getestet.

rapster


rogseut

Habe nun das ganze Systemmonitoring auskommentiert der Fehler scheint nun weg zu sein.
Werde versuchen nach und nach wieder etwas in Betrieb nehmen.
Mal sehn wann es wieder auftritt.





#########################################################################
## Room : Server
########################################################################
#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################

define SYS_Backup dummy
attr SYS_Backup alias FHEM Backup ausführen
attr SYS_Backup room Server
define SYS_BackupRun notify SYS_Backup:* backup
attr SYS_BackupRun room Server

#########################################################################

# Modul-Definition
define sysmon SYSMON 1 1 1 10
attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*
attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
attr sysmon group RPi
attr sysmon network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
attr sysmon room Server
#attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$

#########################################################################

# Log
define FileLog_sysmon FileLog ./log/sysmon-%Y-%m.log sysmon
attr FileLog_sysmon group RPi
attr FileLog_sysmon logtype SM_CPUTemp:Plot,text
attr FileLog_sysmon room Server

#########################################################################

# Visualisierung: CPU-Temperatur
define wl_sysmon_temp SVG FileLog_sysmon:SM_CPUTemp:CURRENT
attr wl_sysmon_temp group RPi
attr wl_sysmon_temp label "CPU Temperatur: Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr wl_sysmon_temp room Server

#########################################################################

# Visualisierung: Netzwerk-Datenübertragung fü eth0
define wl_sysmon_eth0 SVG FileLog_sysmon:SM_Network_eth0:CURRENT
attr wl_sysmon_eth0 group RPi
attr wl_sysmon_eth0 label "Netzwerk-Traffic eth0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_eth0 room Server

#########################################################################

# Visualisierung: Netzwerk-Datenübertragung fü wlan0
define wl_sysmon_wlan0 SVG FileLog_sysmon:SM_Network_wlan0:CURRENT
attr wl_sysmon_wlan0 group RPi
attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_wlan0 room Server

#########################################################################

# Visualisierung: CPU-Auslastung (load average)
define wl_sysmon_load SVG FileLog_sysmon:SM_Load:CURRENT
attr wl_sysmon_load group RPi
attr wl_sysmon_load label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_load room Server

#########################################################################

# Visualisierung: RAM-Nutzung
define wl_sysmon_ram SVG FileLog_sysmon:SM_RAM:CURRENT
attr wl_sysmon_ram group RPi
attr wl_sysmon_ram label "RAM-Nutzung Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_ram room Server

#########################################################################

# Visualisierung: Dateisystem: Root-Partition
define wl_sysmon_fs_root SVG FileLog_sysmon:SM_FS_root:CURRENT
attr wl_sysmon_fs_root group RPi
attr wl_sysmon_fs_root label "Root Partition Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_root room Server

#########################################################################

# Visualisierung: Dateisystem: USB-Stick
define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
attr wl_sysmon_fs_usb1 group RPi
attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_usb1 room Server

#########################################################################

# Anzeige der Readings zum Einbinden in ein 'Raum'.
define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
attr SysValues group RPi
attr SysValues room Server

#########################################################################

# Anzeige CPU Auslasung
define wl_sysmon_cpustat SVG FileLog_sysmon:SM_CPUStat:CURRENT
attr wl_sysmon_cpustat group RPi
attr wl_sysmon_cpustat label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat plotsize 840,420
attr wl_sysmon_cpustat room Server
define wl_sysmon_cpustat_s SVG FileLog_sysmon:SM_CPUStatSum:CURRENT
attr wl_sysmon_cpustat_s group RPi
attr wl_sysmon_cpustat_s label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat_s plotsize 840,420
attr wl_sysmon_cpustat_s room Server

#########################################################################

isy

Bei mir hat es geholfen, den Telnet Port ohne SSL zu definieren.
Sieht so aus:
define telnetPort telnet 7072 global
attr telnetPort room System


Das Problem trat auf im Zusammenhang mit dem Presence  Modul.

Da ich Telnet nicht über Internet (den DNS) nutze, brauche ich auch SSL nicht.

Gruß Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Arek

Hey,

hast du herausfinden können wo der Fehler liegt? Ich habe exakt das gleiche Problem. Es scheint an Sysmon zu liegen...

Gruß Arek

isy

Nein, keinen Root Cause  gefunden.
Telnet ohne SSL und schon lief es.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Arek


Arek

Ich habe zwar kein SSL aber dafür ein Passwort. Nach Entfernung des Passworts funktioniert es wieder.

iwan

Dies ist ein Bug in FHEM/Blocking.pm

Als Workaround kann man die folgende Definition in seine fhem.cfg aufnehmen,
die sonst von FHEM/Blocking.pm (mit seiner potentiellen Sicherheitslücke) eingerichtet wird:


define telnetForBlockingFn telnet 0



Hier die zugehörige FehlerAnalyse, die Ursache kann ich leider nicht abstellen.
Vielleicht hilft es dem Autor von FHM/Blocking.pm:

Das Problem tritt erst nach einem rereadcfg auf und liegt in der Funktion BlockingCall().

genauer:
Nach einem reboot/shutdown restart ist die Welt noch in Ordnung, erst nach einem rereadcfg tritt der Fehler auf.


# $Id: Blocking.pm 10047 2015-11-29 14:42:18Z rudolfkoenig $
# ...

sub
BlockingCall($$@)
{
  my ($blockingFn, $arg, $finishFn, $timeout, $abortFn, $abortArg) = @_;

  # Look for the telnetport
  # must be done before forking to be able to create a temporary device
  my $tName = "telnetForBlockingFn";
  $telnetDevice = $tName if($defs{$tName});

  if(!$telnetDevice) {
    foreach my $d (sort keys %defs) {
      my $h = $defs{$d};
      next if(!$h->{TYPE} || $h->{TYPE} ne "telnet" || $h->{SNAME});
      next if($attr{$d}{SSL} || $attr{$d}{password} ||
              AttrVal($d, "allowfrom", "127.0.0.1") ne "127.0.0.1");
      next if($h->{DEF} =~ m/IPV6/);
      $telnetDevice = $d;
      last;
    }
  }

  # If not suitable telnet device found, create a temporary one
  if(!$telnetDevice) {
    my $ret = CommandDefine(undef, "$tName telnet 0");
    if($ret) {
      $ret = "BlockingCall ($blockingFn): ".
                "No telnet port found and cannot create one: $ret";
      Log 1, $ret;
      return $ret;
    }
    CommandAttr(undef, "$tName room hidden");
    $telnetDevice = $tName;
    $defs{$tName}{TEMPORARY} = 1;
    $attr{$tName}{allowfrom} = "127.0.0.1";
  }

  # do fork
  ...


SYSMON benutzt FHEM/Blocking.pm. Das wiederum benötigt einen telnet-Port, der für Verbindungen von 127.0.0.1 (localhost) erreichbar ist.

Dazu prüft Blocking.pm die vorhandenen/definierten telnet-Ports.
Sobald die die Attribute SSL, password oder allowfrom benutzen, werden sie ignoriert und Blocking.pm legt temporär einen zusätzlichen telnet-Port namens "telnetForBlockingFn" an.

Bei einem rereadcfg geht dieses temporäre Device verloren und der Code in Zeile 105 liefert die kaputte NetzAdresse 'localhost:' (ohne Port-Nummer).