kleines curl Problem

S

sp1k3

Grünschnabel
Hallo, ich bin LINUX Frischling und hab mich ein wenig in eien Sackgasse verlaufen...

Ich habe vor, die Verzeichnisgröße via curl Befehl in eine app zu übergeben.
zur Zeit kann ich einen "TEXT" direkt übergeben, aber ich scheitere an dem Rest.

So übergebe ich den Text:

curl -X POST -H 'Content-type: application/jason' --data '{"text":"Testtext"}' Ziel-URL
Das klappt auch wunderbar, aber ich muss nun "Testtext" durch die Verzeichnisgröße eines Ordners erstezen (du -h $ordnername zum Beispiel)

leider fehlen mir die Grundkenntnisse dafür, eventuell kann mir ja jemand auf die Sprünge helfen ;-)

Danke im Voraus
 
Hallo marce, vielen Dank für deine Antwort. Habe gestern herum experimentiert und ein kleines batch Script gebastelt, welches die gewünschte Ordnergröße in eine Vareabele packt ($ordnergroesse), die müsste ich nur irgendwie mit ausgeben, aber ich hab es nach 2 Stunden lesen in Foren und Anleitungen aufgegeben.
Was muss ich tun um "Testtext" durch die Vareabele zu ersetzen?

Gruß
Sp1K3
 
die Variable dort einfach reinschreiben und ggf. drumherum die " und ' entsprechend quoten.
 
Ja, genau das habe ich mit herum experimieren ja gemeint ich hab gefühlte 20 Kombinationen ausprobiert, aber als Anfänger ist das nicht so einfach.
 
Hab jetzt alle Möglichkeiten die Variabele ($msg) auszugeben durchexerziert, bekomme immer nur eine Fehlermeldung, gebe es langsam auf...

So sieht mein kleines Script jetzt aus:

#!/bin/bash

ordnergroesse="`du -sh $root`"
msg="BackupAggregator: Komplett-Backup des Live-Systems erledigt :-)! - Ordnergröße ist "$ordnergroesse
echo $msg

curl -X POST -H 'Content-type: application/json' --data '{"text":<$(du -sh $root)}' URL........
 
Morgen,

das Problem liegt einfach das Variablen die in Singlequotes stehen als Text behandelt werden:

Code:
root@jinx:/tmp# cat vardump.sh
#!/bin/bash

vardump="VAR"

echo '{"text"::"${vardump}"}'
echo '{"text"::"'${vardump}'"}'

Code:
root@jinx:/tmp# ./vardump.sh
{"text"::"${vardump}"}
{"text"::"VAR"}


->> echo '{"text"::" ' ${vardump} ' "}'

mfg
HeadCrash
 
Irgendwie scheine ich mich falsch auszudrücken,

das echo $msg klappt einwandfrei, was nicht funktioniert ist der curl Befehl

nach "text" muss ich die Variabele $msg übergeben, aber jegliche Art der Setzung von Hochkommata, Anführungszeichen noch sonstiger Zeichen die mir in dem Zusammenhang dazu einfallen funktioniert.

Code:
#!/bin/bash

msg="BackupAggregator: Komplett-Backup des Live-Systems erledigt :-)! - Ordnergröße ist `du -sh $root` "

curl -X POST -H 'Content-type: application/json' --data '{"text":"$msg"}' URL....

Leider muss ich im Script hier URL.... schreiben, da ich noch keine LINKS Posten darf
 
Nö, du schreibst nicht falsch, das Problem ist, das Variablen als Text behandelt werden, wenn sie in Singlequotes stehen.

Versuchs doch mal mit

Code:
curl -X POST -H 'Content-type: application/json' --data '{"text":"'$msg'"}' URL....

Farbe geht im Code-Tag verloren
--data '{"text":"'$msg'"}'
 
Hab ich, heraus kommt:


root@devwolfgang:~# ./test1.sh
curl: option -: is unknown
curl: try 'curl --help' or 'curl --manual' for more information
root@devwolfgang:~#

und der Server bekommt nichts
 
... und wie sieht test1.sh aus?
... und bitte [ code]-Tags verwenden.
 
Siehe Posting von gestern, da ist - bis auf die Ziel URL - alles drin

in der ersten Zeile das übliche um ein batch script einzuleiten,

dann weise ich der Vareabelen msg einen Inhalt zu (in alten scripten habe ich die testweise mit echo ausgeben lassen)
und in der letzten Zeile der curl befehl, der auf dem Server eine Nachricht $msg ausgeben soll. Wenn ich einen festen Text benutze klappt die Ausgabe ja...
 
Zuletzt bearbeitet:
Starte das Skript Mal bitte mit

Code:
bash -x test1.sh

Und poste die Ausgabe.
 
root@devwolfgang:~# bash -x test1.sh
++ du -sh
+ msg='BackupAggregator: Komplett-Backup des Live-Systems erledigt :-)! - Ordnergröße ist 3,6M . '
+ curl -X POST -H 'Content-type: application/json' --data '{"text":"BackupAggregator:' Komplett-Backup des Live-Systems erledigt ':-)!' - Ordnergröße ist 3,6M . '"}' URL.....
curl: option -: is unknown
curl: try 'curl --help' or 'curl --manual' for more information
root@devwolfgang:~#
 
Habe es endlich raus:


Code:
#!/bin/bash


ordnergroesse="`du -sh $root`"

curl -X POST -H 'Content-type: application/json' --data '{"text":"BackupAggregator: Komplett-Backup des Live-Systems erledigt :-)! - Ordnergröße ist '"${ordnergroesse}"'"}' ...URL
 

Ähnliche Themen

http request Download mit php5_curl

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Amavis & Benachrichtigungen

Zurück
Oben