রিয়েলটাইমে টিসিপিডিএমপিএস আউটপুট কীভাবে প্রসেস / পাইপ করা যায়


27

যদি আমি ক্লায়েন্টদের দ্বারা DNS অনুরোধগুলি (একটি ওপেনআরটি 10.04 রাউটারে) টিসিপিডম্প্প করতে চাই, তবে আমি

root@ROUTER:/etc# tcpdump -n -i br-lan dst port 53 2>&1       
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 96 bytes
22:29:38.989412 IP 192.168.1.200.55919 > 192.168.1.1.53: 5697+ A? foo.org. (25)
22:29:39.538981 IP 192.168.1.200.60071 > 192.168.1.1.53: 17481+ PTR? 150.33.87.208.in-addr.arpa. (44)
^C
2 packets captured
3 packets received by filter
0 packets dropped by kernel

এটা পুরোপুরি ঠিক আছে। কিন্তু। কেন আমি রিয়েলটাইমে টিসিপিডাম্পস আউটপুট পাইপ করতে পারি না?

root@ROUTER:/etc# tcpdump -n -i br-lan dst port 53 2>&1 | awk '/\?/ {print $3}'
^C
root@ROUTER:/etc# 

Tcpdump এর পরে যদি আমি কিছু জাগ্রত করি ইত্যাদি, আমি কোনও আউটপুট পাই না। তা কেন? রিয়েলটাইমে পাইপলাইনিং সহ আমি কেন tcpdump আউটপুট প্রক্রিয়া করতে পারি না? (যাতে উদাহরণস্বরূপ: কেবলমাত্র ২ য় কলামে আউটপুট দেয়)

এর কোন সমাধান আছে কি?

উত্তর:


35

সোজা বাইরে man tcpdump

-l     Make stdout line buffered.  Useful if you want to see the data while 
       capturing it.  E.g.,

              tcpdump -l | tee dat

       or

              tcpdump -l > dat & tail -f dat

       Note that on Windows,``line buffered'' means ``unbuffered'', so that 
       WinDump will write each character individually if -l is specified.

       -U is similar to -l in its behavior, but it will cause output to be 
       ``packet-buffered'', so that the output is written to stdout at the 
       end of each packet rather than at the end of each line; this is 
       buffered on all platforms, including Windows.


3

Tcpdump দৃশ্যত আউটপুট বাফার করছে যখন এটি কোনও পাইপে লিখবে। এটি প্রতিটি লেখার জন্য আউটপুট ফ্লাশ করছে না, সুতরাং সিস্টেম প্রায় 4k বাইট খণ্ডে আউটপুটটি লিখবে। আপনার ফিল্টারটি পুট সীমাবদ্ধ করছে সুতরাং যতক্ষণ না ফিল্টারটি পর্যাপ্ত আউটপুট না লিখে থাকে আপনি কিছুই দেখতে পাবেন না। এটি যথেষ্ট পরিমাণে সংগ্রহ করার পরে এটি একটি খণ্ডে লিখিত হবে এবং তখন আপনাকে বেশ কয়েকটি লাইন নির্গত দেখতে হবে।

অনেকবার ডিএনএস লুকআপগুলি ট্রিগার করার চেষ্টা করুন এবং দেখুন তখন কী ঘটে happens


1

expectunbufferতারা কোনও টিটিআইকে লিখছে তা ধরে নেওয়ার জন্য আদেশগুলি বোকা করার একটি আদেশ রয়েছে যাতে তারা বাফার করে না।


1

আমি tcpdump এর আশেপাশে একটি রিয়েল-টাইম মনিটরিং র‌্যাপার তৈরি করছি যা প্যাকেটগুলি পাওয়া মাত্র তা দেখতে পারা উচিত। যদিও সাথে-l কিছুটা বিলম্বও রয়েছে।

tcpdump এখন আছে --immediate-mode, যা আমার জন্য এই সমস্যার সমাধান করে। এটি কাজ করার জন্য আমি এটি ব্যবহার করে ব্যবহার করেছি-l

এই উত্তর দেখুন ।

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