Como canalizo a saída do tempo de atividade / df para enrolar?

10

Desejo enviar a saída uptimee os dfcomandos para um aplicativo Web usando cURL. Eu tentei:

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

Mas isso não pareceu enviar os dados.

Qual é a maneira correta de enviar a saída de um comando para cURL como um parâmetro POST? (ou wget, se for muito mais fácil)

Callmeed
fonte
você tentou usar o redirecionador para stdout >não um pipe |? Também dê uma olhada xargs.
mbrownnyc
Observe que isso está descrito no manual do curl: curl.haxx.se/docs/manpage.html#-d Ou no manual do wget (abaixo --post-data=string): gnu.org/software/wget/manual/wget.html#HTTP- Opções
mailq 20/09/11
Quando você diz "como um parâmetro POST", quer dizer que precisa ser como se você digitasse seu tempo de atividade em um campo (com um nome) em um formulário e pressionasse enviar, ou como se você salvasse seu tempo de atividade em um arquivo , usou um campo de upload de arquivo para selecionar o arquivo e pressionou enviar? Essas são duas maneiras diferentes de postar dados. -Tcom http[s]://usos PUT, não POST.
DerfK
@ DerfK Sim, eu gostaria que fosse como se eu colasse os resultados do tempo de atividade em um campo de área de texto e ele fosse postado em um URL.
Callmeed

Respostas:

29

Você pode usar a opção -d em curl com um argumento @ - para aceitar a entrada de um pipe. Você precisará construir os pares de valores-chave. Tente o seguinte:

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

Os backticks (`) indicam que o comando incluído (neste caso, o tempo de atividade) deve ser executado, e o texto entre aspas do backtick deve ser substituído pela saída do comando executado.

saffsd
fonte
4
Se a saída do comando inclui quebras de linha (como df) que você pode querer usar curl --data-binary @- URLou em versões mais recentes do curl:uptime | curl --data-urlencode time@- URL
Xebeche