Wie leite ich die Ausgabe von uptime / df zum Curl?

10

Ich möchte die Ausgabe von uptimeund dfBefehle mit cURL an eine Web-App senden . Ich habe es versucht:

uptime | curl http://someurl.com -T -

Aber das schien die Daten nicht zu senden.

Wie kann die Ausgabe eines Befehls als POST-Parameter ordnungsgemäß an cURL gesendet werden? (oder wget wenn das viel einfacher ist)

Callmeed
quelle
Haben Sie versucht, den Redirector für stdout und >nicht für eine Pipe zu verwenden |? Schauen Sie sich auch an xargs.
mbrownnyc
Schauen Sie, dies ist im Handbuch von curl beschrieben: curl.haxx.se/docs/manpage.html#-d Oder im Handbuch von wget (unter --post-data=string): gnu.org/software/wget/manual/wget.html#HTTP- Optionen
mailq
Wenn Sie "als POST-Parameter" sagen, müssen Sie damit sagen, dass Sie Ihre Betriebszeit in ein Feld (mit einem Namen) in einem Formular eingegeben und auf "Senden" geklickt haben oder dass Sie Ihre Betriebszeit in einer Datei gespeichert haben , dann ein Datei-Upload-Feld verwendet, um die Datei auszuwählen, und dann auf Senden geklickt? Dies sind zwei verschiedene Möglichkeiten zum POSTEN von Daten. -Tmit http[s]://verwendet PUT, nicht POST.
DerfK
@DerfK Ja, ich möchte, dass es so ist, als hätte ich die Verfügbarkeitsergebnisse in ein Textfeld eingefügt und es wurde an eine URL gesendet.
Callmeed

Antworten:

29

Sie können die Option -d in curl mit einem @ - Argument verwenden, um Eingaben von einer Pipe zu akzeptieren. Sie müssen die Schlüssel-Wert-Paare selbst erstellen. Versuche dies:

echo "time=`uptime`" | curl -d @- http://URL

Die Backticks (`) geben an, dass der beiliegende Befehl (in diesem Fall die Betriebszeit) ausgeführt und der mit Backtick zitierte Text durch die Ausgabe des ausgeführten Befehls ersetzt werden soll.

saffsd
quelle
4
Wenn die Ausgabe des Befehls Zeilenumbrüche (wie df) enthält, möchten Sie möglicherweise curl --data-binary @- URLoder in neueren Versionen von curl verwenden:uptime | curl --data-urlencode time@- URL
xebeche