আমি কি স্থানীয় ইউনিক্স ডোমেন সকেট টিসিপিডম্পের মতো পর্যবেক্ষণ করতে পারি?


59

আমি আসল সংযোগগুলি বিঘ্নিত না করে কোনও ইউনিক্স সকেটের প্রতিক্রিয়াগুলি পর্যবেক্ষণ করতে এবং প্রক্রিয়াজাতকরণের জন্য কোনও স্ক্রিপ্টে পাইপ করতে চাই।

Tcp সংযোগের জন্য tcpdump দিয়ে এটি কীভাবে করব তা আমি জানি তবে স্থানীয় ইউনিক্স সকেটের জন্য আমি কোনও সমাধান খুঁজে পাচ্ছি না।

এটা কি সম্ভব?


উত্তর:


15

এমন একটি লোক আছে যা দাবি করে এমন একটি অ্যাপ্লিকেশন তৈরি করে যা দুটি সকেটের মধ্যে গেটওয়ে হিসাবে কাজ করে এবং প্রবাহিত সমস্ত ডেটা লগ ইন করে। সুতরাং আপনি কোনও সকেটে ট্যাপ করতে পারবেন না তবে আপনি যদি পরিষেবাটি পুনরায় চালু করতে পারেন এবং এই লোক অ্যাপটি ব্যবহার করতে টিউন করতে পারেন তবে আপনি সমস্ত ট্র্যাফিক দেখতে পারবেন।

পোস্টটির লিঙ্কটি এখানে: ইউনিক্স সকেট স্নিফার

সকেটের সাথে সংযুক্ত প্রসেস আইডি খুঁজে পেতে আপনার আরও একটি উপায় আছে, তারপরে সকেটের ফাইল বর্ণনাকারীর সাথে সন্ধান করুন এবং তারপরে স্ট্রেস ব্যবহার করে ফাইল বর্ণনাকারীটিতে আলতো চাপুন।

যদি আপনি ক্লায়েন্ট / সার্ভারটি সকেটটি ব্যবহার করে যা কিছু থামাতে পারেন এবং এটি পুনরায় কনফিগার করতে পারেন তবে আমি সর্বদা প্রথম পদ্ধতিটি দ্বিতীয় পদ্ধতিটি সুপারিশ করব এবং আপনার কোনও বর্তমান প্রক্রিয়াটি ট্যাপ করা দরকার যা কিছু অ্যাপ্লিকেশনগুলিতে এটি ক্রাশ হতে পারে।

আশা করি কেউ আমাদেরকে আলোকিত করে আলোকিত করবেন :)

শুভকামনা


ইয়াহ, আপনি সস্যাট দিয়ে মিডলম্যান পদ্ধতিটিও করতে পারেন তবে আমি অন্য কোথাও বিদ্যমান সেটিংস সংশোধন না করে আরও সরাসরি পথের জন্য আশা করছি।
ck_

1
তারপরে lsof এবং strace এটাই আমি সচেতন। আপনি প্রক্রিয়া থেকে স্ট্রেস বিচ্ছিন্ন করার সময় প্রোডাক্টিটনের দিকে নজর রাখুন, পরীক্ষা করুন যে তার পরে সবকিছু চলতে থাকে।
বীরত্ব

3
কেন এই সরাসরি সম্ভব নয় আরো কিছু প্রায় খনন আমি সম্পর্কে কিছু বিশদ বিবরণ সহ একটি অনুরূপ প্রশ্ন পাওয়া উপর Stackoverflow stackoverflow.com/questions/8394613/...
ck_

80

আপনি সকেট ব্যবহার করতে পারেন।

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

উপরে যা ঘটছে: প্রথমে আসল সকেটকে সোক.রিজিনালাল এ সরান। সোকেট মূল অবস্থানটিতে একটি নতুন সকেট ('UNIX-LISTEN') তৈরি করে এবং সমস্তকে আসল ('UNIX- সংযুক্ত') এ ফরোয়ার্ড করে। -V সকেটকে এসটিডিআরআরতে আউটপুট প্রিন্ট করতেও বলে।


3
আরেকটু ব্যাখ্যা যোগ করতে যত্নবান?
কাজার্ক

4
মূল ইউনিক্স সকেটের ফাইল সিস্টেমে একটি পথ থাকলে এটি সহজ। তবে কী যদি এটি একটি বিমূর্ত নেমস্পেস ইউনিক্স সকেট যা আপনি আসলে সরাতে পারবেন না?
ভ্যালেরিও শিয়াভনি

6

আপনি সকেটের উভয় পাশের যে কোনও একটি প্রক্রিয়াতে স্ট্রেস ব্যবহার করার চেষ্টা করতে পারেন, যেহেতু এটি আপনাকে কী লেখা / পড়বে তা দেখাবে will আমি আমার উত্পাদন পরিবেশে পেয়েছি, আমার স্যাট নেই, তবে স্ট্রেস নেই।

যে কোনও কার্যকর উদ্দেশ্যে, বড় কিছু নির্ধারণ করা আবশ্যক।


এটি আমার পক্ষে ভাল কাজ করেছে এবং করা সহজ। strace -p <pid>একটি চলমান প্রক্রিয়া দেখতে ব্যবহার করুন ।
ম্যাট মুনসন

quick কমান্ড: strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.logএবং তারপরে পরীক্ষা চালান। লগটি খুব বড় কিনা আস্তে আস্তে পরীক্ষা করার জন্য আপনার কাছে /tmp/php.log রয়েছে। আপনি যদি খুব বেশি ট্র্যাফিক পেয়ে থাকেন তবে আপনার নাম বা
কোনও কিছুর

1
@ হাইগুইটা আমি জানি এটি অনেক দিন হয়ে গেছে, তবে সেই লুপের পরিবর্তে আপনি printfপুনরাবৃত্তিটি পরিচালনা করতে পারবেন । printf " -p %s" $(pidof php5-fpm)প্রতিটি পিড আর্গুমেন্টের সাথে প্রিফিক্স করবে -pএবং লিখতে অনেক বেশি ব্যবহারিক।
জোল 1

2
// backup the socket
sudo mv /var/run/docker.sock /var/run/docker.sock.original

// use tcp port 8089 proxy the original socket
sudo socat TCP-LISTEN:8089,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock.original

// use the new socket to proxy the 8089 port
sudo socat UNIX-LISTEN:/var/run/docker.sock,fork TCP-CONNECT:127.0.0.1:8089

তারপর:

sudo tcpdump -i lo -netvv port 8089

এল ম্যাগনিফেকো! ধন্যবাদ
টাইপলজিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.