Bash Curl Befehl ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Skillkiller
Beiträge: 30
Registriert: 27.07.2016 12:49:05
Lizenz eigener Beiträge: MIT Lizenz

Bash Curl Befehl ausführen

Beitrag von Skillkiller » 23.08.2016 00:29:59

Hallo,
Ich habe mich daran versucht in Bash einen Curl Befehl vorzubereiten und dann auszuführen. Das Problem vor dem ich stehe wie bekomme ich es hin das Curl auch den --data Block als ganzen Block erkennt. Um es mal zu verdeutlichen was ich meine hier mal der Code:

Code: Alles auswählen

#!/bin/bash
token="aqgmthwr1si3ahcuu4xogZensur"
user="ukrm9seqj7dwrtg2bsz4mwvZensur"
title="Tekkit Legends Server"
Nachricht="Starte Tekkit Legends AutoStart Script"
priority="-2"

data="\"token="${token}"&user="${user}"&title="${title}"&message="${Nachricht}"&priority="${priority}"\""

echo $data

curl --data $data https://api.pushover.net/1/messages.json
Am Ende sollte die Konsole diesen Befehl ausführen:

Code: Alles auswählen

curl --data "token=aqgmthwr1si3ahcuu4xogZensur&user=ukrm9seqj7dwrtg2bsz4mwvZensur&..." https://api.pushover.net/1/messages.json
Aber statt dessen bekomme ich diese Fehler Meldung:

Code: Alles auswählen

root@vm123:/home# ./test.sh
"token=aqgmthwr1si3ahcuu4xogZensur&user=ukrm9seqj7dwrtg2bsz4mwvZensur&title=Tekkit Legends Server&message=Starte Tekkit Legends AutoStart Script&priority=-2"                                    
curl: (6) Could not resolve host: Legends
curl: (6) Could not resolve host: Server&message=Starte
curl: (6) Could not resolve host: Tekkit
curl: (6) Could not resolve host: Legends
curl: (6) Could not resolve host: AutoStart
curl: (6) Could not resolve host: Script&priority=-2"
{"message":"cannot be blank","errors":["message cannot be blank"],"status":0,"request":"a8d8427d4bcd8fb19f68dc41d407eb24"}
root@vm123:/home#
Ich hoffe meine Frage ist verständlich genung geschrieben :wink:

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: Bash Curl Befehl ausführen

Beitrag von newdeb » 23.08.2016 07:49:05

Die Leerzeichen in "title" und "Nachricht" sollten entwertet werden, also z.B. für title:

Code: Alles auswählen

title="Tekkit\ Legends\ Server"

owl102

Re: Bash Curl Befehl ausführen

Beitrag von owl102 » 23.08.2016 09:15:18

Ich verstehe die Anführungszeichenorgie nicht. Warum nicht einfach

Code: Alles auswählen

#!/bin/bash
token="aqgmthwr1si3ahcuu4xogZensur"
user="ukrm9seqj7dwrtg2bsz4mwvZensur"
title="Tekkit Legends Server"
Nachricht="Starte Tekkit Legends AutoStart Script"
priority="-2"

data="token=${token}&user=${user}&title=${title}&message=${Nachricht}&priority=${priority}"
echo $data

curl --data "$data" https://api.pushover.net/1/messages.json
?

Skillkiller
Beiträge: 30
Registriert: 27.07.2016 12:49:05
Lizenz eigener Beiträge: MIT Lizenz

Re: Bash Curl Befehl ausführen

Beitrag von Skillkiller » 30.08.2016 00:22:51

owl102 hat geschrieben:Ich verstehe die Anführungszeichenorgie nicht. Warum nicht einfach

Code: Alles auswählen

#!/bin/bash
token="aqgmthwr1si3ahcuu4xogZensur"
user="ukrm9seqj7dwrtg2bsz4mwvZensur"
title="Tekkit Legends Server"
Nachricht="Starte Tekkit Legends AutoStart Script"
priority="-2"

data="token=${token}&user=${user}&title=${title}&message=${Nachricht}&priority=${priority}"
echo $data

curl --data "$data" https://api.pushover.net/1/messages.json
?
Danke für deine einfach Hilfe, ich weiß nicht warum aber ich hatte die Annahme das in einem String die Variblen nicht geladen werden

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Bash Curl Befehl ausführen

Beitrag von Cae » 30.08.2016 02:08:41

Skillkiller hat geschrieben:ich weiß nicht warum aber ich hatte die Annahme das in einem String die Variblen nicht geladen werden
Das stimmt ja auch, zumindest bei der entsprechenden Quote-Art:

Code: Alles auswählen

$ a=foo
$ echo "a=$a"
a=foo
$ echo 'a=$a'
a=$a
$ 
Bei " wird expandiert, bei ' nicht.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten