मुझे वर्तमान में चल रहे टर्मिनल (tty1) के उत्पादन को वर्चुअल टर्मिनल से हुक करने की आवश्यकता है और इसे कैप्चर करना (एक्स सर्वर चलाना)।
मुझे वर्तमान में चल रहे टर्मिनल (tty1) के उत्पादन को वर्चुअल टर्मिनल से हुक करने की आवश्यकता है और इसे कैप्चर करना (एक्स सर्वर चलाना)।
जवाबों:
मुझे यह एक उपकरण कहा जाता है ttylog
। यह सीपीएल पर उपलब्ध एक पर्ल प्रोग्राम है । इसमें कुछ युगल हैं, एक यह है कि मैं केवल यह पता लगा सकता हूं कि एक टर्मिनल से कैसे जुड़ा जाए जो किसी व्यक्ति के हिस्से के रूप में मेरे बॉक्स में बनाया गया था। दूसरा यह है कि आपको इसे उन्नत विशेषाधिकारों (यानी रूट या सुडो) के साथ चलाना होगा।
लेकिन यह काम करता है!
पहले TERM # 1 में अपने बॉक्स में ssh:
TERM#1% ssh saml@grinchy
इस नए टर्मिनल के नोट पर ध्यान दें:
TERM#1% tty
/dev/pts/3
अब दूसरे टर्मिनल में (TERM # 2) इस कमांड को चलाएं:
TERM#2% ttylog pts/3
DEBUG: Scanning for psuedo terminal pts/3
DEBUG: Psuedo terminal [pts/3] found.
DEBUG: Found parent sshd pid [13789] for user [saml]
अब TERM # 1 पर वापस जाएं और सामान टाइप करें, यह TERM # 2 में दिखाई देगा।
सभी कमांड मैंने कोशिश की, (शीर्ष, एलएस, आदि) का उपयोग किए बिना घटना के बिना काम किया ttylog
।
gdb
पहला विकल्प था जो मुझे आया था, मैंने अतीत में इसका इस्तेमाल किया है, लेकिन यह मेरे लिए कम से कम है। खुशी है कि यह आपकी मदद की!
वास्तव में यह है। / Dev / vcs * और / dev / vcsa * उपकरण / dev / tty * उपकरणों (वर्चुअल टर्मिनलों) से मेल खाते हैं। F1 = tty1 = vcs1 / vcsa1 और इसी तरह। Vcs / vcsa "चालू" वर्चुअल टर्मिनल के लिए ट्टी की तरह है।
जड़ के रूप में, आप बस इन उपकरणों (जैसे बिल्ली / देव / vcs2) को बिल्ली कर सकते हैं, और देख सकते हैं कि स्नैपशॉट लेने की तरह इसी वीटी (जैसे / देव / tty2 on F2 पर) क्या है। vcsa * vcs से अलग है * इसमें वे टर्मिनल (स्क्रीन) के आयामों के बारे में जानकारी शामिल करते हैं। ध्यान रखें, यह पात्रों का सिर्फ एक कच्चा स्नैपशॉट है, जैसा कि वे स्क्रीन पर दिखाते हैं - टर्मिनल को आवंटित मेमोरी से इकट्ठा किए जाते हैं - इसलिए अच्छे, आसानी से पार्सबल आउटपुट की उम्मीद न करें।
दोष यह है कि यदि सूचना बहुत तेजी से अतीत में चमकती है, तो उसे पकड़ना मुश्किल हो सकता है। शायद पूंछ-एफ / देव / vcs1 काम करेगा, अगर आपको कई स्क्रीनफुल (खुद की कोशिश नहीं की गई) का पालन करने की आवश्यकता है? इसे पहले फ़ाइल में रीडायरेक्ट करना आसान हो सकता है। इसे देखने के लिए VT (F1-F6) का उपयोग करना भी एक अच्छा विचार हो सकता है, क्योंकि टर्मिनलों में समान आयाम होंगे। मेरे अनुभव में, vcs * - vcsa * - उपकरणों का उपयोग करना सबसे अच्छा है।
यदि वह काम नहीं करता है, तो शायद "बड़ा भाई" पैकेज में से एक जो एक व्यवस्थापक को टर्मिनल पर गतिविधि पर नजर रखने की अनुमति देता है वह काम कर सकता है।
पुनश्च: मैं यह पूछना भूल गया कि आप किस ओएस का उपयोग करते हैं। यह लिनक्स के लिए है, हालांकि इसी तरह के उपकरण संभवतः अन्य ओएस पर भी मौजूद हैं। उपकरणों के लिए मैन-पेज के बीच "वर्चुअल कंसोल मेमोरी" की खोज करने का प्रयास करें।
wlan0
, मेरे पास वास्तव में एक कैच -22 स्थिति है जिसे डिबग करने की कोशिश की जा रही है जहां यह स्क्रिप्ट विफल हो रही है। मान लीजिए कि मैं एक USB हब का उपयोग नहीं कर सकता ... क्या मेरे लिए किसी तरह से / dev / tty1 में चार्ट को पाइप करने का कोई तरीका है?
/dev/tty1
रूट करने में सक्षम हूं, लेकिन यह सब स्क्रीन पर पात्रों को प्रदर्शित करता है, उन्हें दर्ज नहीं करता है
tty
उन्हें पहचानने के लिए प्रत्येक टर्मिनल में कमांड का उपयोग करें:
$ tty
/dev/pts/0
$ tty
/dev/pts/1
इन TTYs को मानते हुए, पहले स्टडआउट को दूसरे पर पुनर्निर्देशित करने के लिए, इसे पहले टर्मिनल में चलाएं:
exec 1>/dev/pts/1
नोट: अब हर कमांड आउटपुट pts / 1 पर दिखाई देगा
Pts / 0 के डिफ़ॉल्ट व्यवहार को रोकने के लिए:
exec 1>/dev/pts/0
प्रदर्शन के लिए यह वीडियो देखें ।
यह मेरे लिए काम किया:
कंप्यूटर "ए" पर एक कीबोर्ड का उपयोग करना (यानी भौतिक कंप्यूटर जिसे नियंत्रित किया जाना है), चलाएं: screen -q
ssh
कंप्यूटर "बी" से कंप्यूटर "ए" से कनेक्ट करें ।
Ssh सत्र में, टाइप screen -ls
करने के लिए एक सत्र आईडी प्राप्त करने के लिए (4 अंक जिसमें ट्टी शामिल है )।
उपरोक्त सत्र से कनेक्ट करें: screen -x <session id>
... screen -ls
ऊपर दिए गए कमांड से प्राप्त सत्र आईडी संख्या का उपयोग करना ।
या तो "सत्र" में टाइप किया गया कुछ भी "सत्र" दोनों में होगा, इसलिए उदाहरण के लिए टाइपिंग screen -d
बीओटीएच सत्र छोड़ देगा।
एक अन्य तरीका यह है कि screen
अपने स्थानीय मशीन पर ग्नू उपयोगिता का उपयोग करें । -L
विकल्प के साथ इसे लागू करें , या उस विकल्प के बिना शुरू करें और ^aH
कमांड अनुक्रम का उपयोग करें । या तो दृष्टिकोण सभी इनपुट और आउटपुट को एक फ़ाइल में लॉग इन करने का कारण बनता है जिसका नाम screenlog.x
x है जहां स्क्रीन नंबर है।
यह एक काम है क्योंकि रिमोट मशीन पर कुछ भी अतिरिक्त स्थापित करने की आवश्यकता नहीं है।
चूंकि मैंने tty1 को स्क्रीन के साथ शुरू नहीं किया था इसलिए इस स्क्रिप्ट ने मदद की:
मैंने ऊपर बार्ड कोपरपुड से उत्तर का उपयोग किया। "128" मेरे tty1 की 1 पंक्ति है। नींद को एक उपयुक्त संख्या में सेट किया जा सकता है।
#!/bin/bash
while true
do
sudo tail -c 128 /dev/vcs1 && echo ""
sleep 10
done
मैंने इसे टर्मिनेटर में इस्तेमाल किया और कॉलम को आकार दिया ताकि स्क्रॉल पाठ की एक पंक्ति हो।
दो टर्मिनल खोलें। tty
प्रत्येक में टाइप करें और आपको यह आईडी के रूप में मिलेगा/dev/pts/nº
फिर पहले में आप टाइप करते हैं script -f /dev/pts/nºofSecondTerminal
और दूसरे में आप विपरीत करते हैं script -f /dev/pts/nºofFirstTerminal
ताकि वे जुड़े रहें
बधाई! दोनों एक ही सामान को आउटपुट और प्राप्त करते हैं। एक तीसरे की आवश्यकता है? अच्छा, क्या आपने संयोजन का अध्ययन किया है? आपको 6 script -f
कमांड की आवश्यकता होगी । यहां तक कि अधिक tty? जल्द ही...
screen
याtmux
एक कमांड शुरू करने से पहले विचार करें कि आप दूसरे टर्मिनल से पहुंचना चाहते हैं। ।