kleines curl Problem

sp1k3

Grünschnabel
Beiträge
9
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
 

sp1k3

Grünschnabel
Beiträge
9
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
 

marce

Kaiser
Beiträge
1.294
die Variable dort einfach reinschreiben und ggf. drumherum die " und ' entsprechend quoten.
 

sp1k3

Grünschnabel
Beiträge
9
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.
 

sp1k3

Grünschnabel
Beiträge
9
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........
 

HeadCrash

Routinier
Beiträge
496
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
 

sp1k3

Grünschnabel
Beiträge
9
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
 

HeadCrash

Routinier
Beiträge
496
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'"}'
 

sp1k3

Grünschnabel
Beiträge
9
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
 

sp1k3

Grünschnabel
Beiträge
9
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:

sp1k3

Grünschnabel
Beiträge
9
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:~#
 

sp1k3

Grünschnabel
Beiträge
9
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

Oben