Comment puis-je diriger la sortie de disponibilité / df vers curl?

10

Je souhaite envoyer la sortie de uptimeet les dfcommandes à une application Web à l'aide de cURL. J'ai essayé:

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

Mais cela ne semblait pas envoyer les données.

Quelle est la bonne façon d'envoyer la sortie d'une commande à cURL en tant que paramètre POST? (ou wget si c'est beaucoup plus facile)

Callmeed
la source
avez-vous essayé d'utiliser le redirecteur pour stdout et >non un pipe |? Jetez également un œil à xargs.
mbrownnyc
Regardez cela est décrit dans le manuel de curl: curl.haxx.se/docs/manpage.html#-d Ou dans le manuel de wget (under --post-data=string): gnu.org/software/wget/manual/wget.html#HTTP- Options
mailq
Lorsque vous dites "en tant que paramètre POST", voulez-vous dire que vous avez besoin que ce soit comme si vous aviez tapé votre disponibilité dans un champ (avec un nom) sur un formulaire et appuyé sur Soumettre, ou comme si vous aviez sauvegardé votre disponibilité dans un fichier , puis utilisé un champ de téléchargement de fichier pour sélectionner le fichier, puis appuyé sur soumettre? Ce sont deux façons différentes de POSTER des données. -Tavec http[s]://utilise PUT, pas POST.
DerfK
@DerfK Oui, j'aimerais que ce soit comme si j'avais collé les résultats de disponibilité dans un champ de zone de texte et qu'il a été POSTÉ dans une URL.
Callmeed

Réponses:

29

Vous pouvez utiliser l'option -d dans curl avec un argument @ - pour accepter l'entrée d'un tube. Vous devrez construire vous-même les paires clé-valeur. Essaye ça:

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

Les backticks (`) indiquent que la commande incluse (dans ce cas uptime) doit être exécutée, et le texte entre guillemets remplacés par la sortie de la commande exécutée.

saffsd
la source
4
Si la sortie de la commande inclut des sauts de ligne (comme df), vous voudrez peut-être utiliser curl --data-binary @- URLou dans les versions plus récentes de curl:uptime | curl --data-urlencode time@- URL
xebeche