How do I pipe the output of uptime/df to curl?
28,697
You can use the -d option in curl with a @- argument to accept input from a pipe. You will need to construct the key-value pairs yourself. Try this:
echo "time=`uptime`" | curl -d @- http://URL
The backticks (`) denote that the enclosed command (in this case uptime) should be executed, and the backtick-quoted text replaced with the output of the executed command.
Author by
Callmeed
Updated on September 18, 2022Comments
-
Callmeed over 1 year
I want to send the output of
uptime
anddf
commands to a web app using cURL. I tried:uptime | curl http://someurl.com -T -
But that didn't seem to send the data.
What is the proper way to send the output of a command to cURL as a POST parameter? (or wget if that's much easier)
-
mbrownnyc over 12 yearsdid you attempt to use the redirector for stdout
>
not a pipe|
? Also take a look atxargs
. -
mailq over 12 yearsLook this is described in the manual of curl: curl.haxx.se/docs/manpage.html#-d Or in the manual of wget (under
--post-data=string
): gnu.org/software/wget/manual/wget.html#HTTP-Options -
DerfK over 12 yearsWhen you say "as a POST parameter", do you mean you need it to be as if you typed in your uptime in a field (with a name) on a form and pressed submit, or as if you saved your uptime to a file, then used a file upload field to select the file, then pressed submit? These are two different ways of POSTing data.
-T
withhttp[s]://
uses PUT, not POST. -
Callmeed over 12 years@DerfK Yes, I'd like it to be as if I pasted the uptime results into a textarea field and it was POSTed to a URL.
-
-
xebeche about 11 yearsIf the output of the command includes linebreaks (like
df
) you might want to usecurl --data-binary @- URL
or in newer versions of curl:uptime | curl --data-urlencode time@- URL