[gelöst]Curl Befehl im Script geht nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo erstmal.

    Ich habe schon mehrere Beiträge hier im Forum verfolgt, die mir geholfen haben meinen neuen Raspi in die richtige Richtung zu lenken.
    Ich möchte ihn nutzen um mittels Codesys meine Hausautomatisierung zu realisieren, da er deutlich mehr Möglichkeiten bietet, als andere Steuerungen.
    Bei meiner Recherche bin ich auf die Möglichkeit gestoßen Push Nachrichten mittels Pushbullet zu verschicken. Wenn ich den Befehl direkt im Terminal eingebe, oder mittels Putty, dann klappt das auch schon so wie ich möchte. Wenn ich allerdings den gleichen Befehl in ein Script packe und das dann ausführe bekomme ich den Fehler
    "curl: (3) Illegal characters found in URL".

    Hier mal die beiden Zeilen aus dem Script:
    #!/bin/sh
    curl -u o.xxxxxxxxxxxxxxxxxxxxDqAb1TQwkOLu: -d type=note -d title="Msg from Raspi" -d body="MSG" -X POST https://api.pushbullet.com/api/pushes

    Das Script liegt unter /usr/local/bin/ und ich führe es mit "bash /usr/local/bin/pushbullet_MSG.sh" aus.

    Hat jemand eine Idee, was ich falsch mache, oder wonach ich schauen kann?

    Vielen Dank!

    Einmal editiert, zuletzt von hando0815 (6. April 2016 um 17:27)

  • Hallo hando0815,

    herzlich Willkommen in uinserem Forum!

    Die Fehlermeldung ist doch eindeutig:


    "curl: (3) Illegal characters found in URL".

    Da hast Du irgendwelche Zeichen drin, die curl verblüffen. Umlaute, ß oder so...

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • ... bekomme ich den Fehler
    "curl: (3) Illegal characters found in URL".

    Das Script liegt unter /usr/local/bin/ und ich führe es mit "bash /usr/local/bin/pushbullet_MSG.sh" aus.

    Wie ist die Ausgabe von:

    Code
    cat -A /usr/local/bin/pushbullet_MSG.sh


    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Erstmal vielen Dank für die sehr schnellen Antworten.

    Andreas ich dachte auch, das es eindeutig ist, aber ich kann kein komisches Zeichen in "https://api.pushbullet.com/api/pushes" finden

    rpi444 Die Ausgabe bringt:
    #!/bin/sh^M$
    curl -u o.xxxxxxxxxxxxxxxxxxxxDqAb1TQwkOLu: -d type=note -d title="Msg from Raspi" -d body="MSG" -X POST https://api.pushbullet.com/api/pushes^M$
    #curl -help^M$
    Es wird also an jede Zeile ein "^M$" angehangen.

    Liegt das vielleicht daran, das ich die Ursprungsdatei in Windows erstellt habe und sie dann kopiert habe? Ich habe hier irgendwo etwas von kompatiblen Editoren oder so gelesen.
    Ich werde nochmal versuchen das direkt abzutippen.

    Wenn es was bringt, melde ich mich nochmal.
    Danke für die Anregung.


  • Liegt das vielleicht daran, das ich die Ursprungsdatei in Windows erstellt habe und sie dann kopiert habe?

    Ja, ich denke das wird die Ursache sein. Verwende einen Linux-/Unix-Editor. Z. B. nano (oder gleichwertig).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Hallo Hando,

    ^M ist \x0D als dec13 = CR = Carriage Return = Wagenrücklauf.

    Ein typisches Zeichen, dass bei Windows an ein Zeilenende angehängt wird. Bei einigen Editoren kannst Du aber das Zeilenende-Zeichen an das Betriebssystem anpassen bzw. entfernen.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (15. Oktober 2017 um 14:02)

  • Erste Ergebnisse:

    Ich habe nun das Script in Nano abgetippt (ist ja nur die eine Zeile). Das Script funktioniert nun, allerdings bekomme ich die Meldungen: "curl: (6) Could not resolve host: =Msg fromRaspi" und "curl: (6) Could not resolve host: =MSG".
    Ausgeführt wird das ganze, also ich bekomme eine, allerdings leere, Pushmitteilung aufs Handy.
    Wenn ich die Zeile genau so in Putty eingebe, bekomme ich die Fehlermeldungen nicht und die Nachricht hat auch den gewünschten Inhalt.

    Der cat Befehlt liefert nun die das Script mit einem "$" als Zeilenende. Ist das normal?

    Grüße

    Hando0815


  • Der cat Befehlt liefert nun die das Script mit einem "$" als Zeilenende. Ist das normal?


    Ja, das ist normal.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Die Dollar-Zeichen haben da nichts verloren, das sind in der Shell Spezialzeichen zB fuer die Einsetzung von Variablennamen. Die muessen also weg. Und die Fehlermeldungen klingen so, als ob du nie Anfuehrungszeichen um die Argumente vergessen haettest...


  • Die Dollar-Zeichen haben da nichts verloren, das sind in der Shell Spezialzeichen zB fuer die Einsetzung von Variablennamen. Die muessen also weg. 

    Die müssen nicht weg, denn die sind nicht dort. Es geht um die Ausgabe von "cat -A ...".

    Code
    -A, --show-all
                  equivalent to -vET
    Code
    -E, --show-ends
                  display $ at end of each line

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (5. April 2016 um 22:38)

  • Ich habe mir auch schon gedacht, das die Anführungszeichen fehlen, bzw. falsch sind. Aus Beispielen aus dem Netz habe ich die " übernommen, aber ich habe es auch schon ohne und mit ' versucht.
    Das Argument in " zu verpacken ist doch richtig, oder nicht?
    Was mich am meisten stutzig macht ist ja, das der gleiche Befehl direkt im Terminal/Putty korrekt und wie gewünscht ausgeführt wird.


  • Das Argument in " zu verpacken ist doch richtig, oder nicht?

    Evtl. kann dir geholfen werden, wenn Du dein Script hier in geeigneter Form (code block, ...) postest.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Da hast du recht, das hätte ich natürlich direkt machen können, hier also als CodeBlock.

    Bash
    #!/bin/sh
    curl -u o.xxxxxxxxxxxxxxxxxxxxDqAb1TQwkOLu: -d type=note -d title="Msg from Raspi" -d body="MSG" -X POST https://api.pushbullet.com/api/pushes
  • @raspi444 ups, hab' ich nicht gesehen, dass da die Argumente angegeben waren.

    hando0815

    Also so wie du den Befehl oben angegeben hast, funktionier er bei mir:

    Code
    beer:~ deets$ curl -u o.xxxxxxxxxxxxxxxxxxxxDqAb1TQwkOLu: -d type=note -d title="Msg from Raspi" -d body="MSG" -X POST https://api.pushbullet.com/api/pushes
    {"error":{"code":"invalid_access_token","type":"invalid_request","message":"Access token is missing or invalid.","cat":"(=^・ω・^)y="},"error_code":"invalid_access_token"}

    Modulo der falschen Authentifikation natuerlich.

  • Ok, ich habe meinen Fehler gefunden.
    Es hatten sich 2 Leerzeichen in dem Script eingeschlichen, die ich wahrscheinlich gestern immer übersehen habe.

    Vielen Dank für die Super Hilfe!!!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!