मैं फ़ाइलों को अपलोड करने निम्न सिंटैक्स का उपयोग:curl: अपलोड करते समय प्रगति जानकारी कैसे प्रदर्शित करें?
curl --form [email protected] --form press=OK [URL]
कैसे प्रगति प्रदर्शित करने के लिए? धन्यवाद।
मैं फ़ाइलों को अपलोड करने निम्न सिंटैक्स का उपयोग:curl: अपलोड करते समय प्रगति जानकारी कैसे प्रदर्शित करें?
curl --form [email protected] --form press=OK [URL]
कैसे प्रगति प्रदर्शित करने के लिए? धन्यवाद।
यह वही है मैं अपने निर्माण लिपियों में से एक में उपयोग करते हैं:
curl "${UPLOAD_URL}" \
--progress-bar \
--verbose \
-F build="${BUILD}" \
-F version="${VERSION}" \
-F ipa="@${IPA};type=application/octet-stream" \
-F assets="@-;type=text/xml" \
-F replace="${REPLACE}" \
-A "${CURL_FAKE_USER_AGENT}" \
<<< "${ASSETS}" \
| tee -a "${LOG_FILE}" ; test ${PIPESTATUS[0]} -eq 0
-F
और -A
विकल्प शायद आपकी रुचि का नहीं होगा, लेकिन उपयोगी भागों हैं:
curl "${UPLOAD_URL}" --progress-bar
जो अपलोड के दौरान प्रगति पट्टी (डिफ़ॉल्ट 'प्रगति मीटर' के बजाय) दिखाने के लिए curl
बताता है, और:
| tee -a "${LOG_FILE}" ; test ${PIPESTATUS[0]} -eq 0
जो कमांड के आउटपुट को लॉग फ़ाइल में जोड़ता है और इसे stdout
पर भी गूंजता है। test ${PIPESTATUS[0]} -eq 0
भाग यह बनाता है कि इस लाइन की निकास स्थिति (जो एक बैश स्क्रिप्ट में है) एक ही निकास कोड है जो curl
कमांड लौटाया गया है और tee
कमांड की निकास स्थिति नहीं है (आवश्यक है क्योंकि tee
वास्तव में अंतिम आदेश है इस लाइन में निष्पादित, curl
नहीं)।
man curl
से:
PROGRESS METER
curl normally displays a progress meter during operations, indicating the amount of transferred data, transfer speeds and estimated time left, etc.
curl displays this data to the terminal by default, so if you invoke curl to do an operation and it is about to write data to the terminal, it disables the progress meter as otherwise it would mess up the
output mixing progress meter and response data.
If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (>), -o [file] or similar.
It is not the same case for FTP upload as that operation does not spit out any response data to the terminal.
If you prefer a progress "bar" instead of the regular meter, -# is your friend.
OPTIONS
-#, --progress-bar
Make curl display progress as a simple progress bar instead of the standard, more informational, meter.
एनबी! डाउनलोड प्रगति के बारे में जानकारी प्राप्त करने के लिए 'tee' कमांड की आवश्यकता है। यदि आप 'टीई' का उपयोग नहीं करना चाहते हैं तो बस 'grep -v'^uniqueStringNeverHappens $ ''कमांड का उपयोग करें। अधिक जानकारी: http://stackoverflow.com/a/17178410/751932 – Speakus
वैकल्पिक रूप से: '>/dev/null' – asymmetric
यह मेरे लिए काम नहीं करता है :( संपादित करें: कभी नहीं, समस्या यह थी कि मैं चाहता था समय कितना समय लगता है, इसलिए मैंने 'टाइम कर्ल - प्रोग्रेस-बार --verbose ...' का उपयोग किया जो प्रगति पट्टी को दिखाए जाने से रोकता है। समय के बिना इसे चलाना काम करता है। –
मैं स्वीकार किए जाते हैं जवाब के आदेश पुनर्निर्देशन में समस्या आई और -o
विकल्प जो प्रगति बार दिखाई देता है एक फ़ाइल में प्रतिक्रिया उत्पादन स्थापित करेंगे पाया।
curl --progress-bar \
-o upload.txt \
-H ${SOME_AUTH_HEADER} \
-T ${SOME_LARGE_FILE} \
"${UPLOAD_URL}"
वांछित परिणाम प्राप्त करने के लिए बस एक और विकल्प।
नोट: आदमी पृष्ठ से इस लाइन पर जोर क्यों प्रगति बार नहीं दिखा रहा है जब सिर्फ --progress-bar
निर्दिष्ट करने के मूल कारण को समझना महत्वपूर्ण है।
If you want a progress meter for HTTP POST or PUT requests,
you need to redirect the response output to a file,
using shell redirect (>), -o [file] or similar.
अन्य सभी उत्तरों में समस्या है कि उन्हें आपको एक (लॉग) फ़ाइल में कर्ल के मूल आउटपुट को लिखने की आवश्यकता है। हालांकि यह सभी मामलों में नहीं चाहता था।
समस्या यह है कि कर्ल प्रगति बार/मीटर को छुपाता है, जब सर्वर प्रतिक्रिया की अपेक्षा की जाती है, जिसे एसडीओटी में लिखा जाता है। तो मूल रूप से बार को दिखाने के लिए आउटपुट को फ़ाइल में रीडायरेक्ट कर सकता है। हालांकि हम चाहते हैं कि नहीं करना चाहते, तो /dev/null
और tee
हमें यहाँ मदद कर सकते हैं:
curl --progress-bar -T "${SOME_LARGE_FILE}" "${UPLOAD_URL}" | tee /dev/null
कर्ल के उत्पादन tee
जो कंसोल के लिए उत्पादन दोनों लिखते हैं (जो हम प्रगति बार देखना चाहते हैं और यह भी सर्वर से पारित हो जाता है प्रतिक्रिया) और एक फ़ाइल में (जिसे हमारे द्वारा जरूरी नहीं है, लेकिन जैसा कि हम /dev/null
का उपयोग करते हैं, इससे कोई फर्क नहीं पड़ता)।
ध्यान दें कि पाठ्यक्रम के कर्ल देव ने मज़े के लिए प्रगति पट्टी को छुपाया नहीं है।इस मामले में आप हमेशा सर्वर परिणाम नहीं देख सकते हैं या इसे केवल कुछ सेकंड दिखाए जा सकते हैं, लेकिन यदि आपको इसकी परवाह नहीं है, तो समाधान एक अच्छा है।
http://curl.haxx.se/docs/manpage.html प्रगति मीटर पर अनुभाग देखें। मुझे संदेह है कि आपको आउटपुट को फ़ाइल में पाइप करने की ज़रूरत है, हालांकि सकारात्मक नहीं है। – Corbin
आप सही हैं। धन्यवाद! – Determinant