में दो आदेशों के बीच इनपुट _and_output कनेक्ट करना मेरे पास दो (यूनिक्स) प्रोग्राम ए और बी हैं जो stdin/stdout से पढ़ते हैं और लिखते हैं।खोल/बैश
मेरी पहली समस्या यह है कि बी और ए के stdout को ए से stdin से जोड़ने के लिए ए के stdout से कनेक्ट करने के लिए कैसे करें। ए जैसे कुछ। बी लेकिन एक द्विपक्षीय पाइप। मुझे संदेह है कि मैं using exec to redirect द्वारा इसे हल कर सकता हूं लेकिन मैं इसे काम नहीं कर सका। कार्यक्रम इंटरैक्टिव हैं इसलिए एक अस्थायी फ़ाइल काम नहीं करेगी।
दूसरी समस्या यह है कि मैं प्रत्येक दिशा को डुप्लिकेट करना चाहता हूं और लॉगिंग प्रोग्राम के माध्यम से एक डुप्लिकेट पाइप करना चाहता हूं ताकि मैं प्रोग्राम के बीच पारित (टेक्स्ट-लाइन आधारित) यातायात देख सकूं। यहां मैं टीई से दूर हो सकता हूं> (...) अगर मैं पहली समस्या को हल कर सकता हूं।
ये दोनों समस्याएं प्रतीत होती हैं जैसे उन्हें अच्छी तरह से ज्ञात समाधान होना चाहिए लेकिन मुझे कुछ भी नहीं मिला है।
मैं एक पॉज़िक्स खोल समाधान पसंद करता हूं, या कम से कम कुछ जो साइगविन पर बैश में काम करता है।
आपके उत्तरों के लिए धन्यवाद मैं निम्नलिखित समाधान के साथ आया था। ए/बी कमांड दो बंदरगाहों को सुनने के लिए एनसी का उपयोग करता है। लॉगिंग प्रोग्राम sed का उपयोग करता है (unuuffered प्रसंस्करण के लिए -u के साथ)।
bash-3.2$ fifodir=$(mktemp -d)
bash-3.2$ mkfifo "$fifodir/echoAtoB"
bash-3.2$ mkfifo "$fifodir/echoBtoA"
bash-3.2$ sed -u 's/^/A->B: /' "$fifodir/echoAtoB" &
bash-3.2$ sed -u 's/^/B->A: /' "$fifodir/echoBtoA" &
bash-3.2$ mkfifo "$fifodir/loopback"
bash-3.2$ nc -l -p 47002 < "$fifodir/loopback" \
| tee "$fifodir/echoAtoB" \
| nc -l -p 47001 \
| tee "$fifodir/echoBtoA" > "$fifodir/loopback"
यह पोर्ट 47001 और 47002 के कनेक्शन के लिए सुनता है और मानक आउटपुट के लिए सभी ट्रैफिक echos।
खोल 2 में कार्य करें:
bash-3.2$ nc localhost 47001
खोल 3 में कार्य करें:
bash-3.2$ nc localhost 47002
अब लाइनों खोल 2 में डाला 3 और इसके विपरीत शेल को लिखा जाएगा और यातायात 1 शेल को लॉग इन , की तरह कुछ:
B->A: input to port 47001
A->B: input to port 47002
ऊपर Cygwin
पर परीक्षण किया गयाअद्यतन: उपरोक्त स्क्रिप्ट कुछ दिनों (!) के बाद काम करना बंद कर दिया। जाहिर है यह डेडलॉक कर सकते हैं। उत्तर में कुछ सुझाव अधिक विश्वसनीय हो सकते हैं।
twinpipe भी नामित पाइप दृष्टिकोण दूसरों के द्वारा सुझाव दिया उपयोग करता है एक खोल स्क्रिप्ट के साथ आता है। धन्यवाद –