সিরিয়াল বন্দর ট্র্যাফিক আমি কীভাবে পর্যবেক্ষণ করতে পারি?


40

বন্দরে লেখা প্যাকেটগুলি দেখার জন্য কি কোনও বন্দর পর্যবেক্ষণের সরঞ্জাম রয়েছে? আমি বিশেষত জাভাতে লেখা আমার প্রোগ্রামটি কাজ করে কিনা তা খতিয়ে দেখতে চাই তাই আমার ছোট্ট অ্যাপ্লিকেশনটি বন্দরে বার্তা লিখছে কিনা তা দেখার জন্য আমার কোনও ধরণের সরঞ্জামের প্রয়োজন। আমি এটা কিভাবে করবো?


5
প্যাকেট বন্দরে লেখা হয় না। চরিত্রগুলি হয়। এটি মোটেও ইথারনেটের মতো নয়।
লরেন্স

1
সহোদর দঃপূঃ সাইট থেকে একই প্রশ্ন: stackoverflow.com/q/940374/12892 এবং serverfault.com/q/112957/4276
ক্রিস্টিয়ান Ciupitu

উত্তর:


17

আমি লিনাক্স সিরিয়াল স্নিফার , জেপনিভুলেটর এবং মনি নামে পরিচিত প্রকল্পগুলি পেয়েছি । প্রথম দুটি দেখতে দেখতে তারা যা চায় ঠিক তেমন করে। শেষটি নিজেকে মনিটর বলে, তবে এটি আসলে একটি আদর্শ সিরিয়াল যোগাযোগ প্রোগ্রামের মতো দেখাচ্ছে।


1
তার জন্য ধন্যবাদ !! আমি একবার চেষ্টা করবো. উপায় দ্বারা আমি আমার জাভা দিক থেকে সমস্যাটি সমাধান করেছি। আমি একটি missing r মিস করছিলাম, যাতে আমার বার্তাটি বন্দরে লিখতে বাধা দেয়। যাইহোক যে জন্য ধন্যবাদ !!
দীপক

3
«লিনাক্স সিরিয়াল স্নিফার g বগি, এটি একেবারে ইনকামিং ডেটা বের করে, এভাবেই আর একটি অ্যাপ্লিকেশন যা আসলে সিরিয়াল শোনায় কিছুই দেখতে পায় না। তবে, অন্তত, যে ডেটা বাইরে যায় তা কোনও সমস্যা ছাড়াই মনে হয়।
হাই-এঞ্জেল

3
থেকে jpnevulator প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী : "Jpnevulator কার্নেল এবং আপনার অ্যাপ্লিকেশান মধ্যে বসতে নির্মিত না হয়।"
শেলভাকু

1
মনির কথা উল্লেখ করে লিঙ্কটি মারা গেছে।
ইয়ারন

1
-1 টি মন্তব্যের কারণে: লিনাক্স সিরিয়াল স্নিফারটি বাগিচা , তারপরে জ্পনেভুলেটর কখনও কার্নেল এবং অ্যাপের মধ্যে বসার জন্য তৈরি করা হয়নি এবং ফিনালি মনি মারা গেছে ... এই উত্তরটি 3 টি বাহ্যিক লিঙ্কগুলিকে নির্দেশ করে এবং সত্যিকারের সমাধান দেয় না। (3 টি লিঙ্কে 3 ব্যর্থ, কিছুই বাকি নেই!)
এফ। হাউরি

30

হ'ল একটি সরঞ্জাম (প্রায়) সমস্ত কিছু (প্রায়) সাথে সংযুক্ত করার জন্য, এবং স্ট্রিমে নকল করতে পারে।
আপনার ব্যবহারের ক্ষেত্রে আপনি আপনার সিরিয়াল বন্দরটি /dev/ttyS0একটি পিটিওয়াইয়ের সাথে সংযুক্ত করতে পারেন /tmp/ttyV0, তারপরে আপনার অ্যাপ্লিকেশনটিকে পিটিওয়াইয়ের teeসাথে নির্দেশ করতে পারেন এবং আপনার পর্যবেক্ষণ করার জন্য কোথাও ইনপুট এবং আউটপুট সকেট করতে পারেন।

গুগলিং "সকেট সিরিয়াল পোর্ট পিটিআই টি ডিবাগ" আপনাকে বেশ কয়েকটি উদাহরণের দিকে নির্দেশ করবে, যার একটি হচ্ছে:

socat /dev/ttyS0,raw,echo=0 \
SYSTEM:'tee in.txt |socat - "PTY,link=/tmp/ttyV0,raw,echo=0,waitslave" |tee out.txt'

ফাইলগুলি in.txtএবং out.txtতারপরে ক্যাপচার করা ডেটা থাকবে।

এটি কমেন্টার (@ ইউজ্রেটস) দ্বারা কাজ করার বিষয়টি নিশ্চিত করেছে।


1
কেবল এটি চেষ্টা করে দেখুন এবং ইনপুট এবং আউটপুট উভয়ই রেকর্ড করা আছে। সোবিট সংস্করণ "1.7.2.4 + সিগফিক্স" ডেবিয়ান জেসি প্যাকেজগুলি থেকে।
ogurets

ধারণাটি ভাল, তবে socatপ্রক্সি আইওটিটিএল কল করতে পারে না।
পিটার বলেছেন, মনিকা

17

আমি মনে করি না সিরিয়াল ড্রাইভারটির এমন কোনও ট্রেসিং কার্যকারিতা রয়েছে যা আপনাকে প্যাকেটগুলি দেখার অনুমতি দেয়। আপনি straceআপনার অ্যাপ্লিকেশন থেকে সমস্ত পাঠ এবং লিখন পর্যবেক্ষণ করতে ব্যবহার করতে পারেন :

strace -s9999 -o myapp.strace -eread,write,ioctl ./myapp

1
নোহাইন সংযুক্ত থাকলে বন্দরে প্যাকেট পাঠানো যাবে?
দীপক

স্ট্রেস আপনাকে বলবে যে এটি বন্দরে অক্ষরগুলি প্রেরণের চেষ্টা করেছে এবং কর্নেল যখন এটির চেষ্টা করেছিল তখন কী প্রতিক্রিয়া জানিয়েছিল। আপনার প্রবাহ নিয়ন্ত্রণ সেটিংসের উপর নির্ভর করে অক্ষরগুলি সংযোগ বিচ্ছিন্ন TXD পিনে আসতে পারে এবং নাও পারে।
জেসেন

ধন্যবাদ, এই উত্তরের উপর ভিত্তি করে আমার গতিশীল স্ট্রাসটি একবার দেখুন !
এফ। হাউরি

4

interceptty যে কাজটি করে:

interceptty /dev/ttyACM0 /dev/ttyDUMMY

বা, একটি দুর্দান্ত আউটপুট ফর্ম্যাট সহ এবং ব্যাকএন্ড ডিভাইস কনফিগার করে এবং লাইন বাফারিং সহ:

interceptty -s 'ispeed 19200 ospeed 19200' -l /dev/ttyACM0 /dev/ttyDUMMY | interceptty-nicedump

এবং তারপরে আপনার প্রোগ্রামের সাথে সংযুক্ত হন /dev/ttyDUMMY


@ অ্যালেক্সস্ট্রিজি: আমার আর্চ লিনাক্স সিস্টেমে এটি আছে। এআর পাতা: aur.archlinux.org/packages/intercepty , উত্সের অনুলিপি: repo.j5lx.eu/archive/intercepty/intercepty-0.6.tar.gz
গোলার র‌্যামব্লার

আমাকে এটি ডাউনলোড করতে হয়েছিল ( wgetযেহেতু .tar.gzফাইলটিতে ক্লিক করা থেকে এটি কোনওরকম দূষিত হয়ে গেছে), ইনস্টল করুন gccএবং makeতারপরে চালান ./configureএবং make install। ওপি এবং আমি যা চাই ঠিক তাই করে।
গ্রীম মস

আপনার উত্তর সবচেয়ে ভাল।
পিটার বলেছেন মোনিকা

3

আমি যখন সিরিয়াল বন্দর দিয়ে আমার অ্যাপ্লিকেশনটির ইন্টারঅ্যাকশন ডিবাগ করি তখন আমি মোসেরিয়াল ব্যবহার করি


5
আপনি কী সম্পর্কে কথা বলছেন, দস্তাবেজগুলিতে এটি কেবলমাত্র একটি টার্মিনাল।
হাই-এঞ্জেল

3

এটা চেষ্টা কর:

screen /dev/tty.usbserial-blahblah 9600

আমার জন্য কাজ কর.


25
এটি বন্দরটি খোলে এবং এটির উপর নিয়ন্ত্রণ ধরে নেয় তাই অন্য কোনও কিছুই এটি ব্যবহার করতে পারে না। এটি ট্রাফিক "মনিটর" বা "স্নিফ" করে না।
ইয়ান এম

3

এইভাবেই আমি শেষ পর্যন্ত বেছে নিই

গিলসের উত্তরের জন্য ধন্যবাদ !

strace -s 9999 -e read -ffp $(sed '/ttyUSB0/s/^.*proc.\([0-9]\+\).fd.*/\1/p;d' <(ls -l /proc/[1-9]*/fd/* 2>/dev/null)) 2>&1 | perl -e '$|=1;my %qa=('a'=>7,'b'=>10,'e'=>33,'f'=>14,'n'=>12,'r'=>15,'t'=>11);sub cnv { my $ch=$_[0];$ch=$qa[$1] if $ch=~/([abefnrt])/;return chr(oct($ch));  };while (<>) { /^read.\d+,\s+"(.*)",\s\d+.*$/ && do { $_=$1;s/\\(\d+|[abefnrt])/cnv($1)/eg;print; };};'

দুঃখিত, আমি ব্যাখ্যা করব ...

strace -s 9999 -e read -ffp $(
    sed "/tty${1:-USB0}/s/^.*proc.\([0-9]\+\).fd.*/\1/p;d" <(
        ls -l /proc/[1-9]*/fd/* 2>/dev/null
    )
) 2>&1 |
    perl -e '
        $|=1;
        my %qa=('a'=>7,'b'=>10,'e'=>33,'f'=>14,'n'=>12,'r'=>15,'t'=>11);
        sub cnv {
            my $ch=$_[0];
            $ch=$qa[$1] if $ch=~/([abefnrt])/;
            return chr(oct($ch));
        };
        while (<>) {
            /^read.\d+,\s+"(.*)",\s\d+.*$/ && do {
                $_=$1;
                s/\\(\d+|[abefnrt])/cnv($1)/eg;
                print;
            };
        };
    '
  • আমি এর ls -l /proc/[0-9]*/fd/* | grep ttyUSB0পরিবর্তে ব্যবহার করি lsof ttyUSB0কারণ আমি তাদের মাঝে মাঝে ধীর দেখেছি।
  • সুতরাং স্ট্রেস ব্যবহার করে বর্তমান প্রোগ্রামটি ট্রেস করবে ttyUSB0
  • শব্দবিন্যাস: tty${1:-USB0}অনুমতি করবে একটি স্ক্রিপ্ট হিসাবে ব্যবহার, আর্গুমেন্ট হিসাবে সিরিয়াল ডিভাইসের নাম দিয়ে তারপর চালানোর জন্য: ttySniff USB0বা ttySniff S0ইত্যাদি।
  • পার্ল স্ক্রিপ্ট unbackslashদ্বারা স্ট্রিং লগ করা হবে strace

নোটা: আমি এগুলি ব্যবহার করে চালিত করি script -tযাতে আমি পুরোটি পুনরায় খেলতে পারি এবং সময় নির্বাহের সন্ধান করতে পারি।


সিরিয়াল বন্দর দিয়ে কী ঘটতে পারে সে সম্পর্কে কোনও সুরক্ষা বিবেচনা নেই !
এফ। হাউরি

দুর্দান্ত, ভাল কাজ, ধন্যবাদ!
টেকনো

1

TtyUSBSpyএকবার দেখুন । এটি আলফা মঞ্চে রয়েছে, তবে এটি কাজ করে।


2
এটা হয় না। এটি পাইথন লেখা আছে, এবং কোডটি কিছু আমদানি করে import pcopy, যা গুগলও খুঁজে বের করে দিয়েছিল।
হাই-অ্যাঞ্জেল

2
সফ্টওয়্যার / হোমপেজটি পরিত্যক্ত দেখাচ্ছে। প্যাকেজ পরিচালকদের মধ্যে নেই।
অ্যালেক্স স্ট্রিজি

1

minicomসিরিয়াল পোর্টগুলি নিরীক্ষণের জন্য সরঞ্জামগুলির তালিকা থেকে অনুপস্থিত। উদাহরণস্বরূপ আরডুইনো ডিভাইস শুনতে এটি ব্যবহার করুন:

minicom --device /dev/ttyACM0 --baud 9600


ওপি "মনিটর" লিখেছেন, তবে তার অর্থ "স্নিফার" (= ট্রানজিটে ট্র্যাফিক পড়তে সক্ষম), যখন মিনিকোম একটি সিরিয়াল পোর্ট "ক্লায়েন্ট" এবং যেমন এই প্রশ্নের উত্তর নয়। মাইক থেকে নিচে উত্তর একই ভুল করেছেন, এবং মন্তব্য সেখানে পরিভাষা সমস্যা হিসাবে ভাল ব্যাখ্যা করে।
অ্যালেক্স স্ট্রাজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.