Bagaimana cara menyalurkan output uptime / df ke curl?

10

Saya ingin mengirim output uptimedan dfperintah ke aplikasi web menggunakan cURL. Saya mencoba:

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

Tapi itu sepertinya tidak mengirim data.

Apa cara yang tepat untuk mengirim output dari perintah ke cURL sebagai parameter POST? (atau lupa kalau itu jauh lebih mudah)

Callmeed
sumber
apakah Anda mencoba menggunakan redirector untuk stdout >bukan pipa |? Lihat juga xargs.
mbrownnyc
Lihat ini dijelaskan dalam manual curl: curl.haxx.se/docs/manpage.html#-d Atau dalam manual wget (under --post-data=string): gnu.org/software/wget/manual/wget.html#HTTP- Opsi
mailq
Ketika Anda mengatakan "sebagai parameter POST", maksudnya Anda memerlukannya seolah-olah Anda mengetik uptime Anda di bidang (dengan nama) pada formulir dan menekan kirim, atau seolah-olah Anda menyimpan uptime Anda ke file , lalu gunakan bidang unggah file untuk memilih file, lalu tekan kirim? Ini adalah dua cara berbeda untuk mengirim data. -Tdengan http[s]://menggunakan PUT, bukan POST.
DerfK
@ DerfK Ya, saya ingin seolah-olah saya menempelkan hasil uptime ke bidang textarea dan itu diposkan ke URL.
Callmeed

Jawaban:

29

Anda bisa menggunakan opsi -d di curl dengan argumen @ - untuk menerima input dari sebuah pipa. Anda perlu membuat sendiri pasangan nilai kunci. Coba ini:

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

Backtick (`) menunjukkan bahwa perintah terlampir (dalam hal ini uptime) harus dieksekusi, dan teks yang dikutip backtick diganti dengan output dari perintah yang dieksekusi.

saffsd
sumber
4
Jika output dari perintah termasuk linebreak (seperti df) Anda mungkin ingin menggunakan curl --data-binary @- URLatau dalam versi curl yang lebih baru:uptime | curl --data-urlencode time@- URL
xebeche