FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mahlzeit24/7 am 28 Oktober 2013, 18:26:03

Titel: snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 28 Oktober 2013, 18:26:03
Hallo Zusammen,

da ich nicht ständig durch Netzwerk pingen möchte, habe ich mich mit dem SNMP Check versucht und stosse da leider an meine Grenzen

der Router kann snmp:

root@HPDebianNAS:/opt/fhem/log# snmpwalk -v 1 -c public 192.168.2.1 .1.3.6.1.2.1.3.1.1.2
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.2 = Hex-STRING: 00 08 9B C1 B6 EB
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.3 = Hex-STRING: 00 1D EC 01 B6 3C
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.4 = Hex-STRING: 00 14 22 DD 9C 92
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.5 = Hex-STRING: 00 26 2D 05 22 1A
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.6 = Hex-STRING: 00 27 19 FE 47 06
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.16 = Hex-STRING: 00 D0 B8 06 F7 0B
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.17 = Hex-STRING: 00 16 01 C5 F2 76
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.100 = Hex-STRING: 00 21 6A A0 B0 4C
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.101 = Hex-STRING: D0 E7 82 3F E3 83
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.102 = Hex-STRING: 00 25 D3 87 49 43
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.108 = Hex-STRING: 10 9A DD 0B A8 23
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.111 = Hex-STRING: 64 31 50 A4 F9 3F
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.116 = Hex-STRING: 04 46 65 83 22 EA
iso.3.6.1.2.1.3.1.1.2.2.192.168.2.132 = Hex-STRING: 34 51 C9 86 31 3B

leider kommt von  function {snmpCheck("192.168.2.1","0x0446658322EA")} 30 30  ausschliesslich ein 0 zurück, obwohl ich über wlan z.b. surfe

2013.10.28 18:16:08 5: PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322EA")}|0
2013.10.28 18:16:08 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322EA")}<
2013.10.28 18:16:08 4: Connection accepted from telnet:127.0.0.1:57552
2013.10.28 18:16:08 5: Cmd: >{PRESENCE_ProcessLocalScan('Samsung|0|absent')}<
2013.10.28 18:16:08 5: PRESENCE_ProcessLocalScan: Samsung|0|absent
2013.10.28 18:16:08 5: Triggering Samsung (1 changes)
2013.10.28 18:16:08 5: Notify loop for Samsung absent
2013.10.28 18:16:08 4: eventTypes: PRESENCE Samsung absent -> absent

an welcher Stelle kann ich das script in 99_myutils.pm dazu veranlassen, den snmpget output ins log zu schreiben?

package main;

use strict;
use warnings;
use POSIX;



# start with your own functions below this line
use Net::SNMP;
sub
snmpCheck($$)
{
  my ($airport,$client)= @_;

  my $community = "public";
  my $host = 192.168.2.1;
  my $oid = ".1.3.6.1.2.1.3.1.1.2";
  #my $oid = ".1.3.6.1.2.1.3.1.1.2.25.1.10.0.1";

  my ( $session, $error ) = Net::SNMP->session(
    -hostname => $host,
    -community => $community,
    -port => 161,
    -version => 1
  );

  if( !defined($session) ) {
    return 0;
    return "Can't connect to host $host.";
  }

  my @snmpoids = ();

  my $response = $session->get_next_request($oid);
  my @nextid = keys %$response;
  while ( $nextid[0] =~ m/^$oid/ ) {
    push( @snmpoids, $nextid[0] );

    $response = $session->get_next_request( $nextid[0] );
    @nextid = keys %$response;
  }

  if( !defined($response = $session->get_request( @snmpoids ) ) ) {
    return 0;
  }

  foreach my $value (values %$response) {
    return 1 if( $value eq $client )
  }

  return 0;
}

# behind your last function, we need the following
1;


herzliche Grüße

Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 28 Oktober 2013, 19:03:06
snmpCheck macht zur zeit nur einen einfachen string vergleich und die snmp lib liefert die hex werte klein geschrieben zurück.

d.h. du musst den string auch im aufruf klein schreiben: snmpCheck("192.168.2.1","0x0446658322ea")

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 28 Oktober 2013, 19:38:26
Hallo Andre,

danke für die rasche Antwort. Das macht Sinn, ich hatte es umgehend implementiert, leider steht das device immernoch auf

state  absent  2013-10-28 19:34:58

hier nochmal die definition

function {snmpCheck("192.168.2.1","0x0446658322ea")} 30 30

hat das evtl was mit dem OS zu tun (debian wheezy)? und der snmp perl version v5.14.2?

Herzliche Grüße

Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 28 Oktober 2013, 19:42:46
du kannst vor die foreach zeile einLog 3, Dumper $response; einbauen. und wenn es probleme gibt noch vor das sub ein use Data::Dumper;

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 28 Oktober 2013, 20:31:06
na, jetzt kommt bewegung hinein:

2013.10.28 20:21:20 2: PRESENCE: error while processing device Samsung - unexpected function out                        put (expected 0 or 1): Undefined subroutine &main::snmpCheck called at (eval 15714) line 1.

nur schient das auch wieder ein anderes temporäres problem zu sein, sollte der dumper jetzt nicht ins logfile schreiben?
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 28 Oktober 2013, 23:29:25
irgendetwas ist beim editieren imt deinem file passiert. fhem kann es (vermutlich durch einen syntax fehler) nicht mehr laden.

schau mal ob du im logfile oder wenn du fhem von hand startest auf der console mehr findest.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 28 Oktober 2013, 23:34:09
Hi Andre,


geht alles wieder, nur der snmpcheck ist unverändert.

NAchdem ich dumper eingefügt hatte machte ich mich vergebens auf die suche des dumps, dann hab ich die erste zeile rausgenommen und die letzten 3 eingefügt.

#Log 5, Dumper $response;
open my $FH, '>', '/opt/fhem/log/dumm.log';
print $FH Dumper $response;
close $FH;

beides ohne erfolg.

Nu hab ich noch schnell snmp auf meinem owrt wlan installiert, leider mit dem selben problem.

Irgendwie bin ich ratlos.....


Herzliche Grüße
Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 28 Oktober 2013, 23:38:26
nimm mal wieder meine log zeile und kopier sie jeweils hinter die beiden zeilen mit $session->get_next_request.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 28 Oktober 2013, 23:46:56
müsste der dumper nicht ins fhem log schreiben?

root@HPDebianNAS:/opt/fhem/log# tail -f fhem-2013-10.log | grep -i samsung
2013.10.28 23:45:49 4: HTTP FHEMWEB:192.168.2.102:55716 GET /fhem&detail=Samsung&detail=Samsung&dev.setSamsung=Samsung&cmd.setSamsung=set&arg.setSamsung=statusRequest&val.setSamsung=
2013.10.28 23:45:49 4: eventTypes: PRESENCE Samsung statusRequest -> statusRequest
2013.10.28 23:45:49 4: HTTP FHEMWEB:192.168.2.102:55717 GET /fhem&detail=Samsung&detail=Samsung&dev.setSamsung=Samsung&cmd.setSamsung=set&arg.setSamsung=statusRequest&val.setSamsung=
2013.10.28 23:45:49 4: eventTypes: PRESENCE Samsung statusRequest -> statusRequest
2013.10.28 23:45:49 4: HTTP FHEMWEB:192.168.2.102:55716 GET /fhem?detail=Samsung
2013.10.28 23:45:49 4: /fhem?detail=Samsung / RL:2231 / text/html; charset=UTF-8 / Content-Encoding: gzip
2013.10.28 23:45:49 4: eventTypes: PRESENCE Samsung absent -> absent
2013.10.28 23:45:49 4: HTTP FHEMWEB:192.168.2.102:55719 GET /fhem?cmd={AttrVal(%22Samsung%22,%22room%22,%22%22)}&XHR=1
2013.10.28 23:45:49 4: /fhem?cmd={AttrVal(%22Samsung%22,%22room%22,%22%22)}&XHR=1 / RL:29 / text/plain; charset=UTF-8 / Content-Encoding: gzip
2013.10.28 23:45:51 4: eventTypes: PRESENCE Samsung absent -> absent

ich hab das set manuell ausgelöst.....
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 28 Oktober 2013, 23:56:25
ohne das '| grep'. samsung taucht in den zeilen die der dumper produziert nicht auf.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 00:01:22
ohne grep

2013.10.28 23:59:47 4: Connection accepted from telnet:127.0.0.1:39852
2013.10.28 23:59:47 4: eventTypes: PRESENCE Handy1 online -> online
2013.10.28 23:59:53 4: myVBUSDevice: COLLECTOR:    10.7 (Celsius)
2013.10.28 23:59:53 4: myVBUSDevice: STORAGE:      58.3 (Celsius)
2013.10.28 23:59:53 4: myVBUSDevice: FRESHWATER:   59 (Celsius)
2013.10.28 23:59:53 4: myVBUSDevice: HEATING:      63.5 (Celsius)
2013.10.28 23:59:53 4: myVBUSDevice: THROUGHPUT:   30 (l/min)
2013.10.28 23:59:53 4: myVBUSDevice: VENT_STORAGE: 30 (Umin
2013.10.28 23:59:53 4: myVBUSDevice: VENT_HEATING: 0
2013.10.28 23:59:58 4: Connection accepted from telnet:127.0.0.1:39854
2013.10.28 23:59:58 4: eventTypes: PRESENCE Samsung absent -> absent

weit und breit nichts in Loglevel 4, werd nochmal 5 starten........
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 29 Oktober 2013, 00:03:58
die log zeilen sind loglevel 3...

wie genau setzt du den loglevel ?

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 00:05:59
auch nicht



PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322ea")}|0
2013.10.29 00:03:00 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322ea")}<
2013.10.29 00:03:00 4: Connection accepted from telnet:127.0.0.1:39953
2013.10.29 00:03:00 5: Cmd: >{PRESENCE_ProcessLocalScan('Samsung|0|absent')}<
2013.10.29 00:03:00 5: PRESENCE_ProcessLocalScan: Samsung|0|absent
2013.10.29 00:03:00 5: Triggering Samsung (1 changes)
2013.10.29 00:03:00 5: Notify loop for Samsung absent
2013.10.29 00:03:00 4: eventTypes: PRESENCE Samsung absent -> absent


ok, lass mers, ich haks ab als "geht nicht" und versuch mit dem lanping leben zu lernen. snmp wär halt elegant gewesen.

Dank Dir vielmals

Herzliche Grüße


Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 00:06:49
naja, in der fhem.cfg doch........


attr global verbose 3......
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 29 Oktober 2013, 00:10:56
du kannst noch ein log jeweils auf $session und $error einbauen nach dem die snmp sessio aufgemacht wird.

und auch mal '{snmpCheck("192.168.2.1","0x0446658322EA")}' im command feld oder der telnet console aufrufen.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 00:26:08
in der console:

2013.10.29 00:14:16 5: PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322ea")}|0
2013.10.29 00:14:16 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322ea")}<
2013.10.29 00:14:17 4: Connection accepted from telnet:127.0.0.1:40309
2013.10.29 00:14:17 5: Cmd: >{PRESENCE_ProcessLocalScan('Samsung|0|absent')}<
2013.10.29 00:14:17 5: PRESENCE_ProcessLocalScan: Samsung|0|absent
2013.10.29 00:14:17 5: Triggering Samsung (1 changes)
2013.10.29 00:14:17 5: Notify loop for Samsung absent
2013.10.29 00:14:17 4: eventTypes: PRESENCE Samsung absent -> absent



jetzt kam ein wenig mehr im log an:


2013.10.29 00:20:56 5: PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322ea")}|0
2013.10.29 00:20:56 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322ea")}<
2013.10.29 00:20:56 3: $VAR1 = undef;

2013.10.29 00:20:56 3: $VAR1 = "Unable to resolve the UDP/IPv4 address \"\x{c0}\x{a8}\"";



2013.10.29 00:23:33 5: PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322ea")}|0
2013.10.29 00:23:33 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322ea")}<
2013.10.29 00:23:34 3: $VAR1 = undef;

2013.10.29 00:23:34 3: $VAR1 = "Unable to resolve the UDP/IPv4 address \"\x{c0}\x{a8}\"";

2013.10.29 00:23:34 4: Connection accepted from telnet:127.0.0.1:40595
2013.10.29 00:23:34 5: Cmd: >{PRESENCE_ProcessLocalScan('Samsung|0|absent')}<
2013.10.29 00:23:34 5: PRESENCE_ProcessLocalScan: Samsung|0|absent
2013.10.29 00:23:34 5: Triggering Samsung (1 changes)
2013.10.29 00:23:34 5: Notify loop for Samsung absent
2013.10.29 00:23:34 4: eventTypes: PRESENCE Samsung absent -> absent



hier nochmal meine 99_myutils, evtzl hab ich da mist gepasted

package main;

use strict;
use warnings;
use POSIX;



# start with your own functions below this line
use Net::SNMP;
use Data::Dumper;

sub
snmpCheck($$)
{
  my ($airport,$client)= @_;

  my $community = "public";
  my $host = 192.168.2.1;
  my $oid = ".1.3.6.1.2.1.3.1.1.2";
  #my $oid = ".1.3.6.1.2.1.3.1.1.2.25.1.10.0.1";

  my ( $session, $error ) = Net::SNMP->session(
    -hostname => $host,
    -community => $community,
    -port => 161,
    -version => 1
  );
Log 3, Dumper $session;
Log 3, Dumper $error;

  if( !defined($session) ) {
    return 0;
    return "Can't connect to host $host.";
  }

  my @snmpoids = ();

  my $response = $session->get_next_request($oid);
Log 3, Dumper $response;
  my @nextid = keys %$response;
  while ( $nextid[0] =~ m/^$oid/ ) {
    push( @snmpoids, $nextid[0] );

    $response = $session->get_next_request( $nextid[0] );
Log 3, Dumper $response;
    @nextid = keys %$response;
  }

  if( !defined($response = $session->get_request( @snmpoids ) ) ) {
    return 0;
  }

#Log 3, Dumper $response;


  foreach my $value (values %$response) {
    return 1 if( $value eq $client )
  }

  return 0;
}

# behind your last function, we need the following
1;

Bitte um verzeihung für evtl dummes anstellen, es sind halt die ersten versuche in fhem.....


HG
Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 29 Oktober 2013, 00:30:55
die ip adresse bei $host muss in anführungszeichen.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 00:36:43
Mensch Andre,    ::)

das hat den connectionknoten gelöst:

2013.10.29 00:34:41 4: Connection accepted from telnet:127.0.0.1:40946
2013.10.29 00:34:41 5: Cmd: >{PRESENCE_ProcessLocalScan('Handy1|0|present')}<
2013.10.29 00:34:41 5: PRESENCE_ProcessLocalScan: Handy1|0|present
2013.10.29 00:34:41 5: Triggering Handy1 (1 changes)
2013.10.29 00:34:41 5: Notify loop for Handy1 online
2013.10.29 00:34:41 4: eventTypes: PRESENCE Handy1 online -> online
2013.10.29 00:34:46 5: PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322ea")}|0
2013.10.29 00:34:46 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322ea")}<
2013.10.29 00:34:46 3: $VAR1 = bless( {
                 '_translate' => 255,
                 '_security' => bless( {
                                         '_error' => undef,
                                         '_community' => 'public',
                                         '_version' => 0
                                       }, 'Net::SNMP::Security::Community' ),
                 '_transport_argv' => [
                                        '-hostname',
                                        '192.168.2.1',
                                        '-port',
                                        161
                                      ],
                 '_pdu' => undef,
                 '_callback' => undef,
                 '_nonblocking' => 0,
                 '_version' => 0,
                 '_transport' => bless( {
                                          '_dest_name' => '¡À¨',
                                          '_max_msg_size' => 1472,
                                          '_sock_name' => '',
                                          '_timeout' => '5',
                                          '_error' => undef,
                                          '_sock_hostname' => '',
                                          '_dest_hostname' => '192.168.2.1',
                                          '_socket' => bless( \*Symbol::GEN27224, 'IO::Socket' ),
                                          '_retries' => 1
                                        }, 'Net::SNMP::Transport::IPv4::UDP' ),
                 '_error' => undef,
                 '_context_engine_id' => undef,
                 '_context_name' => undef,
                 '_delay' => 0,
                 '_discovery_queue' => [],
                 '_hostname' => '192.168.2.1'
               }, 'Net::SNMP' );

2013.10.29 00:34:46 3: $VAR1 = '';

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.2' => '0x00089bc1b6eb'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.3' => '0x001dec01b63c'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.4' => '0x001422dd9c92'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.5' => '0x00262d05221a'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.6' => '0x002719fe4706'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.16' => '0x00d0b806f70b'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.17' => '0x001601c5f276'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.100' => '0x00216aa0b04c'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.101' => '0xd0e7823fe383'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.102' => '0x0025d3874943'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.108' => '0x109add0ba823'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.111' => '0x643150a4f93f'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.116' => '0x0446658322ea'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.132' => '0x3451c986313b'
        };

2013.10.29 00:34:46 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.3.2.192.168.2.2' => '192.168.2.2'
        };

2013.10.29 00:34:46 4: Connection accepted from telnet:127.0.0.1:40947
2013.10.29 00:34:46 5: Cmd: >{PRESENCE_ProcessLocalScan('Samsung|0|absent')}<
2013.10.29 00:34:46 5: PRESENCE_ProcessLocalScan: Samsung|0|absent
2013.10.29 00:34:46 5: Triggering Samsung (1 changes)
2013.10.29 00:34:46 5: Notify loop for Samsung absent
2013.10.29 00:34:46 4: eventTypes: PRESENCE Samsung absent -> absent
^C


frag mich nur, warum das nicht umschaltet?

HG
Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 29 Oktober 2013, 00:43:22
den rest reparieren wie später... ich muss jetzt etwas schlafen :)

gute nacht
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 00:44:31
Ganz herzlichen Dank bis hierher und bis bald.

HG
Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 29 Oktober 2013, 21:05:44
der nächste schritt wäre vor die foreach zeile einLog 3, "foreach"; ,nach der foreach zeile ein Log 3, ">$value< >$client<";und vor das letzte 'return 0' am ende einLog 3, "nicht gefunden";einzubauen.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 21:30:24
Hi Andre,

ich hab gestern alles rausgehauen und abgestellt, weil nebenbei auch der ping gut am akku zog.

Eben wieder alles rein mit deinen Vorschlägen, aber das log hat nur folgenden output


2013.10.29 21:16:20 5: PRESENCE_DoLocalFunctionScan: Samsung|{snmpCheck("192.168.2.1","0x0446658322ea")}|0
2013.10.29 21:16:20 5: Cmd: >{snmpCheck("192.168.2.1","0x0446658322ea")}<
2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.2' => '0x00089bc1b6eb'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.3' => '0x001dec01b63c'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.4' => '0x001422dd9c92'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.5' => '0x00262d05221a'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.6' => '0x002719fe4706'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.16' => '0x00d0b806f70b'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.17' => '0x001601c5f276'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.100' => '0x00216aa0b04c'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.101' => '0xd0e7823fe383'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.102' => '0x0025d3874943'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.103' => '0x109add1dfcd1'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.104' => '0x7cc5374738c5'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.108' => '0x109add0ba823'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.111' => '0x643150a4f93f'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.116' => '0x0446658322ea'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.130' => '0x00262d05221a'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.2.2.192.168.2.132' => '0x3451c986313b'
        };

2013.10.29 21:16:20 3: $VAR1 = {
          '.1.3.6.1.2.1.3.1.1.3.2.192.168.2.2' => '192.168.2.2'
        };

2013.10.29 21:16:20 4: Connection accepted from telnet:127.0.0.1:39388
2013.10.29 21:16:20 5: Cmd: >{PRESENCE_ProcessLocalScan('Samsung|0|absent')}<
2013.10.29 21:16:20 5: PRESENCE_ProcessLocalScan: Samsung|0|absent
2013.10.29 21:16:20 5: Triggering Samsung (1 changes)
2013.10.29 21:16:20 5: Notify loop for Samsung absent
2013.10.29 21:16:20 4: eventTypes: PRESENCE Samsung absent -> absent


Im Anhang nochmal zur sicherheit meine 99_myutils.pm

herzliche grüße

PS: ping ist nicht wirklich ne alternative
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 21:39:01
ok, mit Anhang...
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 21:46:14
wobei ich jetzt da wohl nen fehler drin hab....

syntax error at ./FHEM/99_myUtils.pm line 11, near ") {" Can't use global @_ in "my" at ./FHEM/99_myUtils.pm line 12, near "= @_" Can't use global @_ in "my" at ./FHEM/99_myUtils.pm line 19, near "= @_" syntax error at ./FHEM/99_myUtils.pm line 64, near "}"
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 29 Oktober 2013, 21:50:33
ok, das kommt dann vom fehlenden sub

Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 31 Oktober 2013, 08:41:29
Andre hat das Problem fixen können, ganz herzlichen  Dank dafür.

Ich habs jetzt etwa 2 Tage am Laufen und keine Fehler drin.

Wo jetzt genau das Problem lag ist uns noch nicht ganz klar, anbei das Codeschnipsel.

Herzliche Grüße

Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: chiefjoejj am 08 Dezember 2013, 17:22:46
Sorry,
passt jetzt eigentlich nicht hierher, aber bin langsam am verzweifeln...
Könnte mich bitte jemand erhellen, wie ich eine "gängige" Mac-Adresse (z.B. 28:E1:4D:92:AD:D9) in das für die Abfrage notwendige Format (beginnend mit 0x) umrechnen kann? Hab schon Unzähliges probiert, komme aber auf keinen grünen Zweig..
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 08 Dezember 2013, 17:25:50
einfach alles aneinander hängen und kleinbuchstaben verwenden...

28:E1:4D:92:AD:D9 -> 0x28e14d92add9

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: chiefjoejj am 08 Dezember 2013, 18:06:28
Danke!
Dann war meine Vermutung zwar richtig, es funktioniert aber trotzdem nicht zuverlässig. Wenn ich mir das FHEM-Logfile ansehe, finde ich jede Menge Mac-Adressen der Geräte, die sich in meinem Netzwerk befinden (kabelgebunden und per WLan angebunden) und vom Script entsprechend erkannt bzw. abgefragt werden. Die Mac-Adresse meines iPhones jedoch, welches ebenfalls verbunden ist, wird trotzdem nicht angezeigt, obwohl es definitiv per WLan verbunden ist. Könnte es sein, dass es daran liegt, dass der AirPort Extreme zwar für das WLan zuständig ist, die DHCP-Funktion aber durch meinen Router (Fritzbox) übernommen wird? Jedenfalls sagt selbst das AirPort-Dienstprogramm, dass das iPhone mit der entsprechenden Mac-Adresse über den AirPort Extreme verbunden ist.
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: justme1968 am 08 Dezember 2013, 18:15:38
wenn es mit mac adresse im aurpot diensprogramm auftaut sollte es auch per snmp sichtbar sein.

gruss
  andre
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 08 Dezember 2013, 18:16:11
richtig vermutet, Jörg.

Der check geht auf die adressen und die sind im dhcp Server eingetragen.

Deine Airport stellt lediglich das wlan zur verfügung.

Wenn dein dhcp server (schätze der läuft auf dem router) snmp kann, dann solltest du die abfrage dahin machen.

Herzliche GRüße

Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: chiefjoejj am 08 Dezember 2013, 19:05:05
Hi Frank,
vielen Dank für den Hinweis. Naja dann muss wohl Freetz mit entsprechender SNMP-Option auf meine Fritzbox wandern, damit das klappt. :)
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: chiefjoejj am 09 Dezember 2013, 11:16:20
Kurzes Update: ES FUNKTIONIERT!
Auf der Fritzbox läuft jetzt Freetz mit dem installierten Net-SNMP Paket, welches schließlich noch über die Freetz-Oberfläche gestartet werden musste. Der snmpCheck zeigt jetzt direkt auf die IP der Fritzbox, welche die Anfrage jetzt augenscheinlich korrekt verarbeitet, so dass mein iPhone erkannt wird, welches per WLan am Airport Extreme hängt. Vielen Dank nochmal für den Tipp Frank, ohne den ich es sicher nicht geschafft hätte!
Grüße
Jörg
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: mahlzeit24/7 am 09 Dezember 2013, 12:20:11
Herzlichen Glückwunsch Jörg!

Viele Grüße
Frank
Titel: Antw:snmpcheck gibt ausschliesslich Wert 0 aus
Beitrag von: australien am 10 Februar 2017, 12:57:28
Hallo zusammen

ich habe mir nun die Anleitung und das File auf mein fhem gemacht, leider bekomme ich immer nur die 0 geliefert.
Versuche es schon den 2. Tag mit den diversen Anleitungen, im Prinzip immer das gleiche!

Eine prinzipielle Frage dazu, liefern alle snmp bei den gleichen Abfragecodes my $oid = ".1.3.6.1.2.1.3.1.1.2"; immer die gleichen Ergebnisse? Oder ist die Nummer/Zahl auf den verschiedenen Geräten anders?

mein dhcp sitz auf einer NanoStation.

danke

Robert