Curl ছাড়াই HTTP Request পাঠান
আপনি এমন একটি সার্ভারে কাজ করতে পারেন যেখানে curl বা wget নেই। আপনার একটি endpoint পরীক্ষা করা প্রয়োজন কিন্তু সেই টুলগুলো সেখানে নেই। আপনি সরাসরি HTTP request পাঠানোর জন্য Bash ব্যবহার করতে পারেন।
Bash-এ /dev/tcp নামে একটি লুকানো ফিচার রয়েছে। এটি কোনো আসল ফাইল নয়। এটি একটি বিশেষ ডিভাইস যা Bash বুঝতে পারে। যখন আপনি /dev/tcp/hostname/port-এ কিছু লেখেন, Bash আপনার জন্য একটি TCP connection খুলে দেয়।
এটি যেভাবে কাজ করে:
আপনি file descriptor ম্যানেজ করার জন্য exec কমান্ড ব্যবহার করেন। উদাহরণস্বরূপ, আপনি পড়া এবং লেখার জন্য file descriptor 3 খুলতে পারেন।
এর সিনট্যাক্স দেখতে এমন:
exec 3<>/dev/tcp/example.com/80
একবার এই connection খুলে গেলে, আপনি এতে ডেটা পাঠাতে পারেন। আপনি এখান থেকে ডেটা পড়তে পারেন। এই পদ্ধতিটি আপনাকে দেখায় যে HTTP protocol কীভাবে লো-লেভেলে কাজ করে।
কীভাবে একটি GET request করতে হয়:
ডেটা পেতে হলে আপনাকে সঠিক header পাঠাতে হবে। আপনার request-এর সমাপ্তি বোঝাতে শেষে একটি ফাঁকা লাইন প্রয়োজন।
নিচের ধাপগুলো অনুসরণ করুন:
- আপনার host, port, এবং path ভেরিয়েবলগুলো সেট করুন।
execব্যবহার করে connection খুলুন।- GET request পাঠানোর জন্য
printfব্যবহার করুন। লাইন শেষের জন্য\r\nব্যবহার করুন। - response পড়ার জন্য
catবা একটি loop ব্যবহার করুন। - কাজ শেষ হলে file descriptorটি বন্ধ করে দিন।
উদাহরণ স্ক্রিপ্ট:
HOST="example.com"
PORT=80
REQUEST_PATH="/"
exec 3<>/dev/tcp/${HOST}/${PORT}
printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
cat <&3
exec 3>&-
এই কৌশলটি আপনাকে ক্লায়েন্ট এবং সার্ভার কীভাবে একে অপরের সাথে যোগাযোগ করে তা বুঝতে সাহায্য করে। মিনিমালিস্ট সিস্টেমে debugging করার জন্য এটি একটি দরকারী দক্ষতা।