¿Cómo canalizo la salida de uptime / df a curl?

10

Quiero enviar la salida uptimey los dfcomandos a una aplicación web usando cURL. Lo intenté:

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

Pero eso no parecía enviar los datos.

¿Cuál es la forma correcta de enviar la salida de un comando a cURL como parámetro POST? (o wget si eso es mucho más fácil)

Callmeed
fuente
¿Intentaste usar el redirector para stdout >no una tubería |? También eche un vistazo a xargs.
mbrownnyc
Mira, esto se describe en el manual de curl: curl.haxx.se/docs/manpage.html#-d O en el manual de wget (debajo --post-data=string): gnu.org/software/wget/manual/wget.html#HTTP- Opciones
mailq
Cuando dice "como parámetro POST", ¿quiere decir que necesita que sea como si hubiera ingresado su tiempo de actividad en un campo (con un nombre) en un formulario y presionado enviar, o como si hubiera guardado su tiempo de actividad en un archivo , luego usó un campo de carga de archivos para seleccionar el archivo, luego presionó enviar. Estas son dos formas diferentes de PUBLICAR datos. -Tcon http[s]://usos PUT, no POST.
DerfK
@DerfK Sí, me gustaría que pegara los resultados del tiempo de actividad en un campo de área de texto y se PUBLICÓ en una URL.
Callmeed

Respuestas:

29

Puede usar la opción -d en curl con un argumento @ - para aceptar la entrada de una tubería. Tendrá que construir los pares clave-valor usted mismo. Prueba esto:

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

Los backticks (`) denotan que el comando adjunto (en este caso, tiempo de actividad) debe ejecutarse, y el texto entre comillas reemplazado por el resultado del comando ejecutado.

saffsd
fuente
44
Si la salida del comando incluye saltos de línea (como df), es posible que desee usar curl --data-binary @- URLo en versiones más recientes de curl:uptime | curl --data-urlencode time@- URL
xebeche