Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] CURL Befehl ausführen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

[Frage] CURL Befehl ausführen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 6 Kommentatoren 8.0k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    mickyboys
    schrieb am zuletzt editiert von
    #1

    Hi,

    Wie kann ich einen CURL Befehl z.b. als Skript absenden?

    Befehl als solches sieht ungefaehr so aus:

    curl 'https://192.168.1.11/dbbroker' -H 'Authorization: Basic YWRtaW46OHAABBCCYQG8=' -H 'Origin: https://192.168.1.11' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.8,de;q=0.6' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'Referer: https://192.168.1.11/admin/' -H 'X-Requested-With: XMLHttpRequest' -H 'Cookie: sn=3C83390100D72; ys-BrowseDataViewMode=s%3Aicons' -H 'Connection: keep-alive' --data ' <xs:nml xmlns:xs="http://www.netgear.com/protocol/transaction/NMLSchema-0.9" xmlns="urn:netgear:nas:readynasd" src="dpv_1490124698000" dst="nas"><xs:transaction id="njl_id_12134"> <xs:custom id="njl_id_12133" name="Halt" resource-id="Shutdown" resource-type="System"> <shutdown halt="true" fsck="false"></shutdown> </xs:custom> </xs:transaction></xs:nml> ' --compressed --insecure
    

    Hoffe das geht - Danke,

    Axel

    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #2

      Hilft Dir das?

      https://github.com/iobroker/ioBroker.ja … ile1-file2

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #3

        Schau dir mal die Doku zum nodejs Paket "request" an:

        https://github.com/request/request

        Eventuell muss das nachinstalliert werden, glaube aber nicht. Dann kannst du direkt in JavaScript bleiben und musst nicht den Umweg über exec gehen.

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          mickyboys
          schrieb am zuletzt editiert von
          #4

          Hallo,

          Ich bin noch recht neu in dem ganzen Thema. Mir fehlt der Anfang um weitermachen zu koennen.

          Wie muss solch ein Befehl aussehen, z.b. anhand meiner CURL.

          Danke fuer eure Hilfe.

          KR,

          Axel

          1 Antwort Letzte Antwort
          0
          • Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            schrieb am zuletzt editiert von
            #5

            Pack deinen curl befehl in ein Shellscript, da sind zu viele Zeichen drin die in Verbindung mit Javascript zu Problemen führen.

            Dieses Shellscript führst du dann so aus:

            exec('/Pfad_zum_Script/mein_script.sh', function(err, stdout, stderr) {
                if (err) {
                   log(stderr,'error');
                   return;
                }
                Mach was mit stdout;
            });
            

            Persönlicher Support
            Spenden -> paypal.me/J3YC33

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              @Jey Cee:

              da sind zu viele Zeichen drin die in Verbindung mit Javascript zu Problemen führen. `
              Ich sehe da kein Problem, ist doch alles in einfache Anführungszeichen verpackt. request hätte den Vorteil, dass man direkt im Skript die Übersicht hat, was funktioniert.

              Aber die exec-Variante geht natürlich auch.

              –

              Hier wäre die Variante mit request:

              var request = require('request');
              
              var options = {
                url: 'https://192.168.1.11/dbbroker',
                headers: {
                  'Authorization': 'Basic YWRtaW46OHAABBCCYQG8=',
                  'Origin': 'https://192.168.1.11',
                  // die restlichen Header 
                },
                body: ' [...]'
              };
              
              request.post(options, function(error, response, body) {
                if (error) {
                  // auf Fehler reagieren
                } else {
                  // mit der Antwort was machen
                }
              });
              

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • Jey CeeJ Online
                Jey CeeJ Online
                Jey Cee
                Developer
                schrieb am zuletzt editiert von
                #7

                @AlCalzone:

                Ich sehe da kein Problem, ist doch alles in einfache Anführungszeichen verpackt. `

                Ich hab das mal Test weise in ein Skript gepackt, der Editor Zeigt Fehler an egal ob man es mit " " oder ' ' umschließt. Das liegt daran das innerhalb des Befehls " und ' vorkommen.

                Persönlicher Support
                Spenden -> paypal.me/J3YC33

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  Ich meinte natürlich nicht, den Befehl 1:1 in JS einzufügen. Siehe den Edit meiner vorherigen Antwort.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    mickyboys
                    schrieb am zuletzt editiert von
                    #9

                    @AlCalzone:

                    @Jey Cee:

                    da sind zu viele Zeichen drin die in Verbindung mit Javascript zu Problemen führen. `
                    Ich sehe da kein Problem, ist doch alles in einfache Anführungszeichen verpackt. request hätte den Vorteil, dass man direkt im Skript die Übersicht hat, was funktioniert.

                    Aber die exec-Variante geht natürlich auch.

                    –

                    Hier wäre die Variante mit request:

                    var request = require('request');
                    
                    var options = {
                      url: 'https://192.168.1.11/dbbroker',
                      headers: {
                        'Authorization': 'Basic YWRtaW46OHAABBCCYQG8=',
                        'Origin': 'https://192.168.1.11',
                        // die restlichen Header 
                      },
                      body: ' [...]'
                    };
                    
                    request.post(options, function(error, response, body) {
                      if (error) {
                        // auf Fehler reagieren
                      } else {
                        // mit der Antwort was machen
                      }
                    });
                    ```` `  
                    

                    Ich sehe den wichtigsten Befehl "shutdown" nicht in deinem Script. Die header kann er ergaenzen (obwohl ich nicht genau weiss wo sie anfengen und aufhoeren), aber der Shutdownbefehl zum Ende hin sieht anders aus, und genau das ist es was CURL tun soll - mein NAS runterfahren. ;-)

                    1 Antwort Letzte Antwort
                    0
                    • AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      Ich habe den Inhalt des Befehls nicht komplett abgetippt, das war ne Demonstration, wie das grundsätzlich geht. Daher auch die Kommentare

                      // die restlichen Header
                      und 
                      [...]
                      
                      

                      In die einfachen Anführungszeichen hinter "body:" kommt alles, was im CURL-Befehl hinter "–data" ebenfalls in einfachen Anführungszeichen steht.

                      Ebenso müssen die restlichen Header ergänzt werden. Ich habe 2 als Beispiel angegeben, den Rest musst du eben aus dem Befehl rauskopieren.

                      Schau dir den CURL-Befehl mal in seinen Bestandteilen an und schau, wo die in meinem JavaScript auftauchen. Wenn du am Ende nicht sicher bist, gerne nochmal fragen.

                      Ist nicht schwer, aber zumindest ein klein bisschen Eigenleistung sollte man schon erwarten ;)


                      > Die header kann er ergaenzen (obwohl ich nicht genau weiss wo sie anfengen und aufhoeren)
                      Kleiner Blick in den CURL-Befehl: Jeder Header wird mit -H eingeleitet und steht danach in einfachen Anführungszeichen. Der Teil vor und hinter dem : wird in JS jeweils in Anführungszeichen verpackt.

                      Es hilft, wenn man den CURL-Befehl mal in mehrere Zeilen umbricht, dann ist auch relativ schnell zu erkennen, was wo im JS auftaucht.

                      curl 
                      'https://192.168.1.11/dbbroker' 
                      -H 'Authorization: Basic YWRtaW46OHAABBCCYQG8=' 
                      -H 'Origin: https://192.168.1.11' 
                      -H 'Accept-Encoding: gzip, deflate, br' 
                      -H 'Accept-Language: en-US,en;q=0.8,de;q=0.6' 
                      -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36' 
                      -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' 
                      -H 'Accept: */*' 
                      -H 'Referer: https://192.168.1.11/admin/' 
                      -H 'X-Requested-With: XMLHttpRequest' 
                      -H 'Cookie: sn=3C83390100D72; ys-BrowseDataViewMode=s%3Aicons' 
                      -H 'Connection: keep-alive' 
                      --data ' <xs:nml xmlns:xs="http://www.netgear.com/protocol/transaction/NMLSchema-0.9" xmlns="urn:netgear:nas:readynasd" src="dpv_1490124698000" dst="nas"><xs:transaction id="njl_id_12134"> <xs:custom id="njl_id_12133" name="Halt" resource-id="Shutdown" resource-type="System"> <shutdown halt="true" fsck="false"></shutdown> </xs:custom> </xs:transaction></xs:nml> ' 
                      --compressed --insecure
                      
                      

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        mickyboys
                        schrieb am zuletzt editiert von
                        #11

                        Moin,

                        Ich bekomme es nicht hin. Wenn ich die CURL im Terminal spiele (MAC osx) faehrt das NAS sofort runter.

                        Aufgebrochen nach deiner Anleitung in javascript funktioniert nichts.

                        Ich versuch das ganze ueber einen Button im VIS zu aktivieren.

                        So sieht mein script aus… seht ihr den Fehler...

                        createState("javascript.0.Shutdown.ReadyNas516", 1); 
                        var request = require('request');
                        
                        var options = {
                          url: 'https://192.168.1.11/dbbroker',
                          headers: {
                            'Authorization': 'Basic YWRtaW46OHAABBCCYQG8=',
                            'Origin': 'https://192.168.1.11',
                            'Referer': 'https://192.168.1.11/admin/',
                            'X-Requested-With': 'XMLHttpRequest',
                            'Accept-Encoding': 'gzip, deflate, br',
                            'Accept-Language': 'en-US,en;q=0.8,de;q=0.6',
                            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
                            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                          },
                          body: ' <xs:nml xmlns:xs="http://www.netgear.com/protocol/transaction/NMLSchema-0.9" xmlns="urn:netgear:nas:readynasd" src="dpv_1490124698000" dst="nas"><xs:transaction id="njl_id_12134"> <xs:custom id="njl_id_12133" name="Halt" resource-id="Shutdown" resource-type="System"> <shutdown halt="true" fsck="false"></shutdown> </xs:custom> </xs:transaction></xs:nml> '
                        };
                        
                        request.post(options, function(error, response, body) {
                          if (error) {
                            // auf Fehler reagieren
                          } else {
                            // mit der Antwort was machen
                          }
                        });
                        

                        Das bekomm ich als Antwort wenn ich dir CURL im OSX Terminal aktiviere.

                        
                         <xs:nml xmlns:xs="http://www.netgear.com/protocol/transaction/NMLSchema-0.9" src="nas" dst="dpv_1490124698000" locale="en-us"><xs:transaction ref-id/type="0"></xs:transaction></xs:nml> 
                        

                        Danke euch

                        1 Antwort Letzte Antwort
                        0
                        • AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          schrieb am zuletzt editiert von
                          #12

                          Ändere mal den letzten Block ab, er sollte einen Hinweis im Script-Log ausgeben, was schief läuft:

                          request.post(options, function(error, response, body) {
                            if (error) {
                              // auf Fehler reagieren
                              log("Fehler aufgetreten: " + error);
                            } else {
                              // mit der Antwort was machen
                              log("Antwort erhalten: " + body);
                            }
                          });
                          

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          1 Antwort Letzte Antwort
                          0
                          • BluefoxB Offline
                            BluefoxB Offline
                            Bluefox
                            schrieb am zuletzt editiert von
                            #13

                            Man kann:

                            'Authorization': 'Basic YWRtaW46OHAABBCCYQG8=',
                            

                            damit ersetzen:

                            'Authorization': 'Basic ' + new Buffer(username + ':' + password).toString('base64');
                            

                            P.S. Ich habe alle YWRtaW46OHAABBCCYQG8 ersetzt. Weil da password drin steht.

                            1 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              afroasiate
                              schrieb am zuletzt editiert von
                              #14

                              Hallo Leute

                              wollte keinen neuen Thread dafür auf machen, passt aber halbwegs hier rein:

                              Ich möchte gerne mittels executive diesen Shell Befehl ausführen, dazu muss ich einer Variable diesen Befehl zuweisen:

                              // nmap 192.168.100.0/24 -sP | grep report | awk '{print $5 " " substr($6,2,15) }'
                              var abfrage = 'nmap 192.168.100.0/24 -sP | grep report | awk '{print $5 " " substr($6,2,15) }'';
                              

                              Verstehe nicht wie ich in JavaScript die Hochkomas setzen muss damit er den String annimmt.

                              Über eine Hilfe wäre ich dankbar.

                              Grüße

                              Afro

                              1 Antwort Letzte Antwort
                              0
                              • AlCalzoneA Offline
                                AlCalzoneA Offline
                                AlCalzone
                                Developer
                                schrieb am zuletzt editiert von
                                #15

                                @afroasiate:

                                Verstehe nicht wie ich in JavaScript die Hochkomas setzen muss damit er den String annimmt. `

                                // nmap 192.168.100.0/24 -sP | grep report | awk '{print $5 " " substr($6,2,15) }'
                                var abfrage = 'nmap 192.168.100.0/24 -sP | grep report | awk \'{print $5 " " substr($6,2,15) }\'';
                                

                                Du musst die einfachen Anführungszeichen deines Strings escapen mit Backslash, damit sie nicht als Ende des Strings aufgefasst werden.

                                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                712

                                Online

                                32.4k

                                Benutzer

                                81.5k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe