কার্লের মতো কোনও কমান্ড ত্রুটি ছাড়াই সম্পূর্ণ হয়েছে কিনা তা কীভাবে পরীক্ষা করবেন?


24

আমি এইচটিটিপি পোস্টের মাধ্যমে সার্ভারে একটি ফাইল আপলোড করতে কার্ল ব্যবহার করছি।

curl -X POST -d@myfile.txt server-URL

আমি যখন কমান্ড লাইনে এই কমান্ডটি ম্যানুয়ালি কার্যকর করি তখন আমি সার্ভারের মতো একটি প্রতিক্রিয়া পাই "Upload successful"। তবে, আমি যদি কোনও স্ক্রিপ্টের মাধ্যমে এই কার্ল কমান্ডটি কার্যকর করতে চাই তবে কীভাবে আমি জানতে পারি যে আমার পোস্টের অনুরোধটি সফল হয়েছিল?

উত্তর:


21

সহজ উপায় হ'ল প্রতিক্রিয়া সঞ্চয় এবং এটি তুলনা:

$ response=$(curl -X POST -d@myfile.txt server-URL);
$ if [ "Upload successful" == "${response}" ]; then … fi;

আমি এটা পরীক্ষা করিনি। বাক্য গঠনটি বন্ধ হতে পারে, তবে এটি ধারণা। আমি নিশ্চিত যে এটি করার আরও সূক্ষ্ম উপায় রয়েছে যেমন কার্লের প্রস্থান কোড বা অন্য কিছু পরীক্ষা করা।

হালনাগাদ

curlবেশ কয়েকটি প্রস্থান কোড ফেরত দেয়। আমি অনুমান করছি যে একটি ব্যর্থ পোস্টের ফলাফল হতে পারে 55 Failed sending network data.সুতরাং আপনি সম্ভবত $?( Expands to the exit status of the most recently executed foreground pipeline.) এর সাথে তুলনা করে নিশ্চিত করতে পারেন যে প্রস্থান কোডটি শূন্য ছিল :

$ curl -X POST -d@myfile.txt server-URL;
$ if [ 0 -eq $? ]; then … fi;

অথবা যদি আপনার আদেশটি তুলনামূলকভাবে সংক্ষিপ্ত হয় এবং এটি ব্যর্থ হয় তখন আপনি কিছু করতে চান, আপনি শর্তাধীন বিবৃতিতে শর্ত হিসাবে প্রস্থান কোডের উপর নির্ভর করতে পারেন:

$ if curl --fail -X POST -d@myfile.txt server-URL; then
    # …(success)
else
    # …(failure)
fi;

আমি মনে করি এই ফর্ম্যাটটি প্রায়শই পছন্দ করা হয় তবে ব্যক্তিগতভাবে আমি এটি কম পঠনযোগ্য বলে মনে করি।


20

আপনি curl's --failপ্রথমে একবার এটি পরীক্ষা করা উচিত, আপনি বিকল্প ব্যবহার করতে সক্ষম হতে পারে ।

man curl

-f, --fail (HTTP) সার্ভার ত্রুটিতে চুপচাপ ব্যর্থ (কোনও আউটপুট নেই)। এটি বেশিরভাগই স্ক্রিপ্টগুলি আরও কার্যকর করতে ব্যর্থ প্রচেষ্টা সহ আরও ভাল করতে সক্ষম হয়। সাধারণ ক্ষেত্রে যখন কোনও এইচটিটিপি সার্ভার নথি সরবরাহ করতে ব্যর্থ হয়, এটি এমন একটি HTML ডকুমেন্ট ফেরত দেয় যাতে (যা প্রায়শই কেন এবং আরও কিছু বর্ণনা করে)। এই পতাকাটি কার্টটিকে আউটপুট করা থেকে বিরত করতে এবং 22 এর ত্রুটি ফিরে আসবে।

          This method is not fail-safe and there are occasions where  non-
          successful  response  codes  will  slip through, especially when
          authentication is involved (response codes 401 and 407).

এইভাবে আপনি কেবল করতে পারেন:

args="-X POST -d@myfile.txt server-URL"
curl -f $args && echo "SUCCESS!" ||
    echo "OH NO!"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.