আমি কীভাবে ইউনিক্স ডোমেন সকেটের সাথে ডেবিয়ান স্কুইজে শেলের মাধ্যমে যোগাযোগ করতে পারি?


99

আমি একটি ডেবিয়ান স্কুইজ ওয়েব সার্ভার চালাচ্ছি। আমি এটিতে ম্যাকচেড ইনস্টল করেছি এবং ইউনিক্স ডোমেন সকেটে (এ /tmp/memcached.sock) শুনতে মেমক্যাচটি কনফিগার করেছি , কারণ এটি কেবল একই সার্ভারে থাকা ওয়েবসাইট থেকে বার্তাগুলি গ্রহণ করা প্রয়োজন।

এটি ঠিকঠাকভাবে কাজ করছে বলে মনে হচ্ছে, তবে আমি শেলের মাধ্যমে মেমচেডের সাথে যোগাযোগ করতে চাইলে এটি আমার মনে হচ্ছে এটি কী করছে তা পরীক্ষা করে দেখতে চাই।

মেমক্যাচড একটি সাধারণ এএসসিআইআই প্রোটোকলের মাধ্যমে বার্তা গ্রহণ করে (যদি আমি সঠিকভাবে বুঝতে পারি)। যদি এটি টিসিপি / আইপিতে শুনছিল, আমি এতে বার্তাগুলি প্রেরণ করতে পারতাম যেমন nc:

$ echo "stats settings" | nc localhost 11211

তবে পরিবর্তে ডোমেন সকেটে কীভাবে পাঠ্য পাঠানো যায় তা আমি বুঝতে পারি না।

আমার ল্যাপটপ (যা OS X এর লায়ন রান) উপর উভয় ncএবং telnetঅপশন (আছে -Uএবং -uযথাক্রমে) ডোমেইন সকেট ব্যবহার করতে। তবে, আমার ডেবিয়ান স্কিজ ওয়েব সার্ভারে, এই বিকল্পগুলি উপস্থিত নেই।

উত্তর:


72

সাথে netcat-openbsd, একটি -Uবিকল্প আছে। আপনার যদি এটি না থাকে তবে আপনি সম্ভবত এর netcat-traditionalপরিবর্তে ইনস্টল করেছেন; আমি স্যুইচিং পরামর্শ দিচ্ছি।

উদাহরণ কমান্ড: nc -U /var/run/socket


নেটকাট এ নতুন ফাইল তৈরি করবে /var/run/socket? কোন বিদ্যমান ফাইল পুনরায় ব্যবহার করার উপায় আছে?
আলেকজান্ডার মিলস

1
@ আলেকজান্ডারমিলস যদি আপনি এটি শুনতে ( -l) বলতে বলেন তবে এটি ফাইলটি তৈরি করবে। অন্যথায়, এটি সকেটটি ইতিমধ্যে বিদ্যমান থাকার প্রত্যাশা করে (এবং ইতিমধ্যে এটিতে কিছু শুনেছে)। সুতরাং উত্তরের উদাহরণ কমান্ড ফাইল তৈরি করে না।
ডাওরবার্ট

94

সঙ্গে socat(একটি 'দুটি ডেটা চ্যানেলের মধ্যে দ্বিমুখী ডেটা রিলে') আপনি ভালো UNIX ডোমেইন সকেট সংযোগ করতে পারেন:

$ socat - UNIX-CONNECT:/tmp/memcached.sock

19

netcat-openbsdইউনিক্স-ডোমেন সকেটে সংযুক্তিকে সমর্থন করে। এটি ব্যবহার করে আপনি কোনও ইউএনআইএক্স-ডোমেন স্ট্রিম সকেট বা ইউএনআইএক্স-ডোমেন ডেটাগ্রাম সকেটের সাথে সংযুক্ত করতে পারেন এবং অতএব আপনাকে সকেটের ধরণটি নেটকেটে বলতে হবে।

উদাহরণস্বরূপ, /dev/logলিনাক্সে ফাইল হ'ল একটি ইউনিক্স-ডোমেন ডেটাগ্রাম সকেট সকেট, এইভাবে nc -U /dev/log কাজ করবে না । পরিবর্তে ব্যবহার nc -uU /dev/log। -U এর সাথে -u ব্যবহার করে নেটক্যাট জানায় যে এটি একটি ইউনিক্স-ডোমেন ডেটাগ্রাম সকেট।

nc -U /tmp/socket  #Connect to UNIX-domain stream socket
nc -uU /tmp/socket #Connect to UNIX-domain datagram socket


একইভাবে, ব্যবহারের সময় socat, ইউনিক্স-ক্লায়েন্ট বিকল্পটি ব্যবহার করুন। এই বিকল্পটি ব্যবহার করে আপনি উভয়ই ইউএনআইএক্স-ডোমেন স্ট্রিম এবং ইউএনআইএক্স-ডোমেন ডেটাগ্রাম সকেটের সাথে সংযোগ করতে পারেন । এর ম্যান পেজ (ম্যান সাকট) থেকে , " এটি প্রথমে সংযোগ দেওয়ার চেষ্টা করে এবং যদি এটি ব্যর্থ হয় তবে ধরে নেওয়া হয় এটি একটি ডেটাগ্রামের সকেট, সুতরাং উভয় প্রকারকে সমর্থন করে "।

socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of its type

1
এটি আশ্চর্যজনকভাবে নমনীয়, ভাল প্যারামিট্রাইজেবল সরঞ্জাম।
ব্যবহারকারী 259412

15

আপনি দেবিয়ান উপর স্যাম্যাট ব্যবহার করতে পারেন । এটি ইনস্টল করতে:

# apt-get install socat

দেখতে বেশ সুন্দর লাগছে। আমি পেতে প্রদর্শিত না socatআমার সার্ভারে ইনস্টল করেছি তবে অবশ্যই এর উপলব্ধ: packages.debian.org/squeeze/socat
পল ডি মধ্যে Waite
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.