Як я трубу висновок часу / df для згортання?


10

Я хочу надіслати висновки uptimeта dfкоманди веб-додатку за допомогою CURL. Я намагався:

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

Але це, схоже, не надсилало дані.

Який правильний спосіб надіслати вихід команди в cURL як параметр POST? (або wget, якщо це набагато простіше)


Ви намагалися використовувати переспрямовувач для 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 Так, я хотів би, щоб це було так, як якщо б я вставив результати безперервної роботи в поле textarea, і це було розміщено на URL.
Callmeed

Відповіді:


29

Ви можете використовувати опцію -d у curl з аргументом @ -, щоб прийняти вхід з труби. Вам потрібно буде побудувати пари ключ-значення самостійно. Спробуйте це:

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

Повернення (`) позначає, що додана команда (в даному випадку оновлення часу) повинна бути виконана, а текст, який цитується за допомогою зворотного посилання, замінюється на висновок виконаної команди.


4
Якщо висновок команди включає в себе рядки (наприклад df), ви можете використовувати curl --data-binary @- URLабо в нових версіях curl:uptime | curl --data-urlencode time@- URL
xebeche
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.