ฉันจะส่งออกท่อของ uptime / df ไปยังขดได้อย่างไร


10

ฉันต้องการส่งเอาต์พุตuptimeและdfคำสั่งไปยังเว็บแอปโดยใช้ cURL ฉันเหนื่อย:

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

แต่ดูเหมือนจะไม่ส่งข้อมูล

วิธีที่เหมาะสมในการส่งเอาต์พุตของคำสั่งไปยัง cURL เป็นพารามิเตอร์ POST คืออะไร? (หรือว่าถ้ามันง่ายกว่านี้)


คุณพยายามใช้ตัวเปลี่ยนเส้นทางสำหรับ stdout >ไม่ใช่ไพพ์|หรือไม่? xargsนอกจากนี้ยังจะดูที่
mbrownnyc

ดูนี่อธิบายไว้ในคู่มือของ curl: curl.haxx.se/docs/manpage.html#-dหรือในคู่มือ wget (ใต้--post-data=string): gnu.org/software/wget/manual/wget.html#HTTP- ตัวเลือก
mailq

เมื่อคุณพูดว่า "เป็นพารามิเตอร์ POST" หมายความว่าคุณต้องการให้มันเหมือนกับว่าคุณพิมพ์ในสถานะการออนไลน์ในฟิลด์ (พร้อมชื่อ) ในแบบฟอร์มและกดส่งหรือราวกับว่าคุณบันทึกสถานะการออนไลน์ของคุณเป็นไฟล์ จากนั้นใช้ฟิลด์อัพโหลดไฟล์เพื่อเลือกไฟล์จากนั้นกดส่ง? นี่เป็นสองวิธีที่แตกต่างกันของการโพสต์ข้อมูล -Tด้วยการhttp[s]://ใช้ PUT ไม่ใช่ POST
DerfK

@DerfK ใช่ฉันต้องการที่จะเป็นถ้าฉันวางผลลัพธ์ uptime ลงในช่อง textarea และมันถูกโพสต์ไปยัง URL
Callmeed

คำตอบ:


29

คุณสามารถใช้ตัวเลือก -d ใน curl กับ @ - อาร์กิวเมนต์เพื่อรับอินพุตจากไพพ์ คุณจะต้องสร้างคู่ของคีย์ - ค่าด้วยตัวคุณเอง ลองสิ่งนี้:

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

backticks (`) แสดงว่าคำสั่งที่ล้อมรอบ (ในกรณีนี้คือช่วงเวลาที่ใช้งานได้) ควรดำเนินการและข้อความที่อ้างถึง backtick ถูกแทนที่ด้วยเอาต์พุตของคำสั่งที่ดำเนินการ


4
หากเอาต์พุตของคำสั่งมีการแบ่งบรรทัด (เช่นdf) คุณอาจต้องการใช้curl --data-binary @- URLหรือในเวอร์ชันที่ใหม่กว่าของ curl:uptime | curl --data-urlencode time@- URL
xebeche
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.