cURL হল একটি প্যাকেজ যাতে রিমোট সার্ভারের মধ্যে ডেটা ট্রান্সফারের জন্য বিভিন্ন টুল থাকে। এটি FTP, উইন্ডোজ শেয়ার, মেইল সার্ভার, এবং অবশ্যই HTTP ব্যবহার করে ওয়েব সার্ভার সাপোর্ট করে।
লিনাক্স শেল থেকে ফাইল ডাউনলোড করা সাধারণত cURL কমান্ড দিয়ে নিচের মত করে করা হয়:
curl https://example.org/file.zip --output file.zip
এটি GET মেথড ব্যবহার করে ফাইলের জন্য রিকোয়েস্ট করে এবং সিম্পলি ডাউনলোড করে।
এই আর্টিকেলে দেখানো হবে কিভাবে cURL ব্যবহার করে POST রিকোয়েস্ট করা যায়, ফরম ডেটা সহ। এটি উপকারী হতে পারে যদি সার্ভার ফাইল ডাউনলোড করার জন্য ক্রেডেনশিয়াল চায়, অথবা আপনি একটি ওয়েব ফর্মে ডেটা সাবমিট করার জন্য অটোমেটেড স্ক্রিপ্ট বানাচ্ছেন ডেটাবেসে স্টোরেজের জন্য।
এছাড়া REST API-র সাথে ব্যবহারের জন্য ফাইল থেকে XML বা JSON ডেটা সাবমিট করার চর্চাও করা হবে।
cURL ব্যবহার করে URL এনকোডেড ফিল্ড POST করা
আমাদের উদাহরণের জন্য, আমরা নিচের ফরম ডেটা সাবমিট করব:
| Field Name | Value |
|---|---|
| field1 | value1 |
| field2 | value2 |
ডেটা https://example.org/submit.php URL-এ সাবমিট হবে। example.org এর অ্যাড্রেসগুলো বাস্তবে অস্তিত্বে নেই, এটি শুধু উদাহরণের জন্য একটি সুরক্ষিত ওয়েব ডোমেন। submit.phpও একটি উদাহরণ ফরম সাবমিট স্ক্রিপ্টের নাম যা কোনো নির্দিষ্ট কিছু রেফারেন্স করে না।
ফরম ডেটা একটি সিঙ্গেল স্ট্রিং হিসেবে POST রিকোয়েস্টে পাস করা যায় যেখানে প্রতিটি ফরম ফিল্ড এবং এর ভ্যালু name=value দিয়ে ডিফাইন করা থাকে, এবং সেগুলো & দিয়ে আলাদা থাকে –data অপশন ব্যবহার করে:
curl --data "field1=value1&field2=value2" https://example.org/submit.php
তবে, এটি আদর্শ নয়, কারণ এতে URL এনকোডেড ডেটা দরকার — অর্থাৎ ডেটা যেটি স্পেস এবং স্ল্যাশ স্পেশাল কোড দিয়ে রিপ্লেস করা হয় HTTP-এ পাঠানোর জন্য। আপনি ম্যানুয়ালি করতে পারেন, কিন্তু cURL আপনার জন্য এটি –data-urlencode দিয়ে করতে পারে:
curl --data-urlencode "field1=value1&field2=value2" https://example.org/submit.php
ফিল্ড নেমগুলো URL এনকোডেড নয় — আপনি যদি এনকোড করতে চান তবে সামনে = প্রিফিক্স করুন:
curl --data-urlencode "=user name=Linus Torvalds" https://example.org
নিচের উদাহরণগুলোর জন্য আমরা –data-এর বদলে –data-urlencode ব্যবহার করব POST রিকোয়েস্ট করার জন্য যাতে সহজ হয়।
আলাদা করে URL এনকোডেড ফিল্ড স্পেসিফাই করা
প্রতিটি ফরম ফিল্ড নাম/ভ্যালু আলাদা করে পাস করা যায় — এতে পড়া এবং বুঝা অনেক সহজ হয়:
curl --data-urlencode "field1=value1" --data-urlencode "field2=value2" https://example.org/submit.php
cURL ব্যবহার করে মাল্টিপার্ট/ফাইল আপলোড
ফাইল সহ মাল্টিপার্ট ফরম রিকোয়েস্ট POST দিয়ে সাবমিট করা যায় –form অপশন ব্যবহার করে। নিচের উদাহরণ myfile.txt ফাইলটি fileupload ফরম ফিল্ডে আপলোড করবে:
curl --form "admin@wsxdn.com" https://example.org/submit.php
ফিল্ড ও ফাইলসহ মাল্টিপার্ট, এবং ফাইলনেম
ফরম ফিল্ড নাম এবং ভ্যালু পেয়ারগুলোও ফাইল আপলোডের সাথে ইনক্লুড করা যায়, এবং আপলোড করা ফাইলের জন্য একটি filename যদি আপনি পরিবর্তন করতে চান:
curl --form "admin@wsxdn.com;filename=newfilename.txt" --form field1=value1 --form field2=value2 https://example.org/submit.php
ডেটা ছাড়া POST রিকোয়েস্ট
কোনো ডেটা ছাড়া POST রিকোয়েস্ট করতে কেবল একটি খালি স্ট্রিং পাস করুন:
curl --data-urlencode '' https://example.org/submit.php
ফাইল আপলোড প্রগ্রেস দেখানো
আপলোড কীভাবে প্রগ্রেস করছে তাতে চোখ রাখতে -o output অপশন যোগ করুন প্রগ্রেসবার দেখাতে:
curl --tr-encoding -X POST -v -# -o output -T myfile.dat https://example.org/submit.php
ফাইলে সংরক্ষিত ডেটা সাবমিট করা
যদি ডেটা ইতিমধ্যে একটি ফাইলে সংরক্ষিত থাকে, তবে সেটি পার্স করে cURL কমান্ডে না দিয়ে একসাথে সাবমিট করা যায়:
curl --data-urlencode @myfile.txt https://example.org/submit.php
প্রোগ্রামেটিক API সার্ভিসের জন্য JSON এবং XML ডেটা POST করা যায় উপযুক্ত হেডার যোগ করে:
curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:text/xml" curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:application/json"
উপসংহার
cURL মাস্টার করা গুরুত্বপূর্ণ যদি আপনি ঘন ঘন লিনাক্স কমান্ড লাইনে কাজ করেন। এটি অনেক টাস্ক করতে পারে যেগুলোর জন্য আপনাকে সাধারণত একটি পূর্ণ ওয়েব ব্রাউজারের দরকার হতো, এর পাশাপাশি প্রোগ্রামেটিক API-র সাথে ইন্টারঅ্যাক্ট করা এবং আপনার নিজস্ব সার্ভারের সাথে ডেটা ট্রান্সফার করার জন্যও এটি ব্যবহারী।
আমাদের অন্যান্য লিনাক্স শেল ও স্ক্রিপ্টিং আর্টিকেল এখানে চেক করুন!