लिनक्स पर सूंघना सीरियल पोर्ट


25

मैं लिनक्स पर एक सीरियल पोर्ट के माध्यम से पैकेट को कैसे सूँघ सकता हूँ?


1
यदि आपके प्रश्न के कुछ उत्तर दिए गए हैं, तो आपको इसे स्वीकार करना चाहिए ( meta.serverfault.com/questions/1033/… )
Olli

जवाबों:


27

कुछ विकल्प हैं:

  • sersniff 2 सीरियल पोर्ट के बीच सुरंग / सूँघने का एक सरल प्रोग्राम है।

  • सीरियल टू नेटवर्क प्रॉक्सी (ser2net) एक उपयोगकर्ता के लिए एक नेटवर्क कनेक्शन से एक सीरियल पोर्ट से कनेक्ट करने का एक तरीका प्रदान करता है।

  • SerialSpy एक सीरियल पास-थ्रू डिवाइस के रूप में कार्य करता है। यह दो सीरियल पोर्ट पर आने वाले डेटा के लिए सुनता है और इसके बाद यह डिवाइस कार्य करता है जैसे कि वे सीधे जुड़े हुए हैं। यह डेटा को लॉग भी करता है क्योंकि यह बंदरगाहों के माध्यम से आगे बढ़ता है।

  • sercd एक RFC 2217-compliant सीरियल पोर्ट रिडायरेक्टर है। यह आपको एक नेटवर्क के माध्यम से एक सीरियल पोर्ट साझा करने देता है। यह sredird पर आधारित है। RFC2217 प्रोटोकॉल टेलनेट का विस्तार है और यह संचार पोर्ट मापदंडों को बदलने की अनुमति देता है।

  • SerLooK धारावाहिक लाइनों पर जा रहे डेटा का निरीक्षण करने के लिए एक केडीई अनुप्रयोग है। यह एक बाइनरी टर्मिनल के रूप में काम कर सकता है जो परिभाषित पोर्ट (प्वाइंट टू प्वाइंट मोड) के माध्यम से डेटा भेजता और प्राप्त करता है और उन्हें अलग-अलग विचारों पर प्रदर्शित करता है। प्रत्येक दृश्य को हेक्साडेसिमल, दशमलव, अष्टक, बाइनरी और कच्चे ASCII में डेटा प्रदर्शित करने के लिए कॉन्फ़िगर किया जा सकता है। टर्मिनल इम्यूलेशन विचारों के माध्यम से I / O प्रदर्शन करना और द्वितीयक पोर्ट को परिभाषित करना और "Y" केबल (स्नूपर मोड) का उपयोग करके दो बाहरी मेजबानों के बीच यातायात की निगरानी करना भी संभव है।

  • nullmodem छद्म टर्मिनलों का एक आभासी नेटवर्क बनाता है। यह दो कार्यक्रमों को जोड़ने के लिए एक एडेप्टर के रूप में इस्तेमाल किया जा सकता है, जिन्हें आमतौर पर सीरियल इंटरफ़ेस कार्ड की आवश्यकता होती है।

  • ttywatch मॉनिटर, लॉग और मल्टीप्लेक्स टर्मिनल I / O। इसमें पूर्ण लॉग रोटेशन बनाया गया है, और टेलनेट के साथ-साथ स्थानीय TTY पोर्ट का उपयोग कर सकते हैं।

  • सीरियल लाइन स्निफर (slsnif) एक सीरियल पोर्ट लॉगिंग यूटिलिटी है। यह निर्दिष्ट सीरियल पोर्ट को सुनता है और दोनों दिशाओं में इस पोर्ट से गुजरने वाले सभी डेटा को लॉग करता है।


2
आप इसे मानक टूल का उपयोग करके प्राप्त कर सकते हैं socatऔर tee। 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0। आउटपुट आपको दो पोर्ट देगा ...N PTY is /dev/pts/27... N PTY is /dev/pts/28। 2) sudo cat /dev/ttyS0 | tee /dev/pts/27और दूसरे टर्मिनल में sudo cat /deb/pts/27 | tee /dev/ttyS0। अंत में 3) अपने कार्यक्रम से कनेक्ट करें /dev/tty/28। दो टी कमांड कंसोल को दोनों दिशाओं को डंप करेंगे और वास्तविक सीरियल पोर्ट से / को आगे करेंगे। ध्यान दें कि बॉड्रेट जैसी पोर्ट सेटिंग्स को समय से पहले कॉन्फ़िगर किया जाना चाहिए।
jtpereyda

आप टी सामग्री को एक फ़ाइल में भी सहेज सकते हैं: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capsऔर xxdयदि यह एक बाइनरी प्रोटोकॉल है तो मदद करेगा cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd:।
jtpereyda

@jtpereyda ऐसा लगता है कि आपका तीसरा चरण कनेक्ट प्रोग्राम / dev / ttyS0 से जुड़ा होना चाहिए। उदाहरण के लिए जब मैं PUTTY को वहां / dev / ttyS0 से जोड़ता हूं तो यह मुझे सही ढंग से दिखाता है कि वास्तविक एम्बेडेड बोर्ड के साथ संचार करते समय चरण 2 में आउटपुट। बीटीडब्ल्यू आपके पास एक टाइपो /deb/pts/27होना चाहिए /dev/pts/27। इसके अलावा cat /deb/pts/27 | tee /dev/ttyS0होना चाहिएcat /dev/pts/27 | sudo tee /dev/ttyS0
उत्साही

यह उत्तर बहुत पुराना है, कृपया सीरियल पोर्ट सूँघने के लिए अवरोधन पर विचार करें
चार्ल्स बीपी

1
आप इसे अन्य उत्तर के रूप में प्रदान कर सकते हैं। @CharlesB यह बेहतर क्यों है यह स्पष्ट करना भी अच्छा होगा।
चूजों

12

मैंने इंटरसेप्ट्टी ( GitHub पर प्रतिलिपि ) की कोशिश की , और इसका उपयोग करने में सफल रहा। पहले मैंने इसे ब्याज के बंदरगाह पर चलाया:

interceptty /dev/ttyACM0 

फिर मैंने प्रोग्राम-अंडर-टेस्ट को उस छद्म-टर्मिनल से जोड़ा, /dev/pts/5जो इंटरसेप्टी ने बनाया था।


मैंने slsnif का उपयोग करने की कोशिश की , लेकिन मैंने पाया कि मुझे एक त्रुटि मिली:

Failed to open a pty: No such file or directory

यह मेलिंग सूची आइटम इंगित करता है कि slsnif केवल "विरासत" छद्म-टर्मिनलों ( /dev/ttyp0आदि) का समर्थन करता है जो संभवतः वर्तमान लिनक्स कर्नेल पर उपयोग नहीं किए जाते हैं।


1
धन्यवाद! यहाँ मेरे एम्बेडेड डिवाइस पर एक ही त्रुटि। फिर मैंने intercepttyकाम किया और काम किया!
gfleck

आप कैसे जानते हैं कि यह कौन सा छद्म टर्मिनल बनाता है?
chwi

@chwi आप इसे एक दूसरा पैरामीटर दे सकते हैं, जो एक "फ्रंट-डिवाइस" का नाम है जो इसे बनाने वाले छद्म टर्मिनल के लिए एक सहानुभूति है।
क्रेग मैकक्वीन

धन्यवाद। मैंने पाया कि डिफ़ॉल्ट रूप से, यह / dev / intercepttydummy बनाता है। मैं ट्रैफ़िक को आगे-पीछे देखने में सक्षम था, लेकिन डिवाइस से आने वाला डेटा केवल इंटरसेप्टी द्वारा पढ़ा जाता था, न कि मेरे सॉफ़्टवेयर को चलाने वाला सॉफ्टवेयर।
chwi

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.