Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. [gelöst] - Zabbix (FritzBox etc.)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] - Zabbix (FritzBox etc.)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @arteck last edited by

      @arteck sagte in [gelöst] - Zabbix (FritzBox etc.):

      dann nimm doch den GET

      Das funktioniert nur bei meinem Test-Service.
      Die Fritte erwartet für TR-064 schon einen POST und einen entsprechenden body.

      6211c640-da5d-41ba-8d0f-2068b3c79151-image.png

      1 Reply Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active last edited by

        Des Rätsels Lösung:

        Die Header für den Request müssen so gesetzt werden:

        request.setHeader('Content-Type: text/xml');
        

        und nicht so:

        request.setHeader('Content-Type', 'text/xml');
        

        Dummerweise wirft die JS-Enginge von Zabbix hier keinen Fehler.

        Es kann jetzt also an der Ecke weitergehen.
        Als erstes soll ein Check auf die Portfreigaben eingerichtet werden.
        Das Abfragen der Fritte über TR-064 ist nämlich deutlich schneller als der Kram über .../xyz.lua.

        Was fällt euch so alles ein, was sich mit Zabbix an der Fritte monitoren lässt?

        BananaJoe 1 Reply Last reply Reply Quote 0
        • BananaJoe
          BananaJoe Most Active @Codierknecht last edited by

          @codierknecht das Problem mit Zabbix ist ja das man manchmal einfach in eine Sammelwut verfällt. Ist zwar schön was man alles abrufen kann, aber ob man das braucht ...

          Up- und Download Auslastung frage ich zum Beispiel meinen Switch hinter der Fritte per SNMP statt der Fritte selbst.

          Trotzdem nehme ich nur zu gerne dann dein fertiges Template, zum einen als schönes Beispiel, zum anderen weil man das dann auch schön zeigen kann und die Leute damit etwas anfangen können.

          Du kannst noch die DECT Geräte abfragen usw. Dann bist du irgendwann bei allem was der TR064 und/oder FritzDECT Adapter raussaugt, nur ohne steuern. Kannst dir ja bei den Adapter Inspiration holen.
          Statistiken zur Verbindung / Fehlerrate werden auch immer gerne genommen. Wobei es da ja DSL, Glasfaser und LTE gäbe.

          Das Muster-Template kann gerne alles herausholen was es gibt - man kann dann ja das deaktivieren was man nicht braucht bzw. das Template klonen und zusammenstreichen ...

          1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active last edited by

            Der Vollständigkeit halber hier nun das komplette Script in Zabbix, um die Anzahl der Portweiterleitungen zu ermitteln:

            const params = JSON.parse(value);
            
            var requestBody = '<?xml version="1.0" encoding="utf-8"?>' +
            '<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">' +
            '    <s:Header>' +
            '        <h:InitChallenge xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">' +
            '            <UserID>' + params.username + '</UserID>' +
            '        </h:InitChallenge>' +
            '    </s:Header>' +
            '    <s:Body>' +
            '        <u:' + params.action + ' xmlns:u="' + params.urn + '" />' +
            '    </s:Body>' +
            '</s:Envelope>';
            
            const action = params.urn + '#' + params.action;
            
            // Initialize challenge with Fritz!Box
            var url = 'http://' + params.ip + ':49000' + params.url;
            const request = new HttpRequest();
            request.addHeader('Content-Type: text/xml; charset="utf-8"');
            request.addHeader('User-Agent: AVM UPnP/1.0 Client 1.0');
            request.addHeader('SoapAction: ' + action);
            var response = request.post(url, requestBody);
            
            var statusCode = request.getStatus();
            if (statusCode != 200) {
                throw 'Error ' + statusCode + ' initializing authentication!';
            } else {
                // Calculate authentication
                const nonce = XML.query(response, '//Nonce/text()');
                const realm = XML.query(response, '//Realm/text()');
                const secret = md5(params.username + ':' + realm + ':' + params.password);
                const auth = md5(secret + ':' + nonce);
            
                // Get values with authentication
                requestBody = '<?xml version="1.0" encoding="utf-8"?>' +
                '<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">' +
                '    <s:Header>' +
                '        <h:ClientAuth xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">' +
                '            <Nonce>' + nonce + '</Nonce>' +
                '            <Auth>' + auth + '</Auth>' +
                '            <UserID>' + params.username + '</UserID>' +
                '            <Realm>' + realm + '</Realm>' +
                '        </h:ClientAuth>' +
                '    </s:Header>' +
                '    <s:Body>' +
                '        <u:' + params.action + ' xmlns:u="' + params.urn + '" />' +
                '    </s:Body>' +
                '</s:Envelope>';
            
                response = request.post(url, requestBody);
                var statusCode = request.getStatus();
                if (statusCode != 200) {
                    throw 'Error ' + statusCode + ' sending authenticated request!';
                } else {
                    return(XML.query(response, 'number(//NewForwardNumberOfEntries/text())'));
                }
            }
            

            Die Parameter "ip", "username" und "password" sollten klar sein.
            Was zusätzlich noch benötigt wird:
            "action" = "GetForwardNumberOfEntries"
            "url" = "/upnp/control/layer3forwarding"
            "urn" = "urn:dslforum-org:service:Layer3Forwarding:1"

            Jetzt werde ich nach und nach die Doku von AVM durchgehen, und sehen was da sinnvoll nutzbar ist.
            Das Ganze werde ich dann als Template für Zabbix veröffentlichen.
            Wie gesagt: Wer Vorschläge hat, darf die gerne äußern.

            Aktueller Zwischenstand:
            840cb744-a6b8-47c2-a467-1e6bae7c8a60-grafik.png

            1 Reply Last reply Reply Quote 2
            • Codierknecht
              Codierknecht Developer Most Active last edited by

              Here it is:

              https://github.com/DEV2DEV-DE/zabbix-templates/blob/main/zbx_template_fritzbox.xml

              04037cb0-8e7d-4c51-a4f1-9686c1042750-image.png

              BananaJoe 1 Reply Last reply Reply Quote 1
              • BananaJoe
                BananaJoe Most Active @Codierknecht last edited by

                @codierknecht argh, Version 6.4. Da müsste ich noch eben warten bis 7.0 raus ist ... ich setze in dem Bereich nur die LTS-Versionen ein.

                Codierknecht 2 Replies Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @BananaJoe last edited by

                  @bananajoe sagte in [gelöst] - Zabbix (FritzBox etc.):

                  Version 6.4

                  Lässt sich das unter 6.0 importieren, wenn man einfach im XML die Versionsnummer runterdreht?
                  Oder hat sich zu 6.4 das Format maßgebend geändert?

                  BananaJoe 1 Reply Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active @Codierknecht last edited by

                    @codierknecht Kollege testet gerade 🙂 Könnte reichen, ansonsten sagt er einem was ihn stört

                    1 Reply Last reply Reply Quote 1
                    • Codierknecht
                      Codierknecht Developer Most Active last edited by

                      Wenn man einmal weiß wie es geht ... wer einen Hammer hat, sieht eine Welt voller Nägel 😀

                      Mittlerweile sind's > 80 Items 😉
                      Obwohl so eine Fritte eigentlich recht "unkommunikativ" ist. Kein SNMP, kein Telnet, kein SSH.

                      1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @BananaJoe last edited by

                        @bananajoe sagte in [gelöst] - Zabbix (FritzBox etc.):

                        Da müsste ich noch eben warten bis 7.0 raus ist

                        Just for info:
                        7.0 LTS ist draußen ... 😄

                        1 Reply Last reply Reply Quote 1
                        • BananaJoe
                          BananaJoe Most Active last edited by

                          Was ist neu in Zabbix 7.0?
                          https://www.youtube.com/watch?v=60Zy3bw-wOs

                          1 Reply Last reply Reply Quote 0
                          • arteck
                            arteck Developer Most Active last edited by

                            die honeycomb find ich cool

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            939
                            Online

                            31.7k
                            Users

                            79.9k
                            Topics

                            1.3m
                            Posts

                            6
                            37
                            2315
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo