ভার্চুয়াল টার্মিনাল থেকে বর্তমানে চলমান টার্মিনাল (tty1) আউটপুট এঁকে আমাকে ক্যাপচার করতে হবে (এক্স সার্ভার চলমান)।
ভার্চুয়াল টার্মিনাল থেকে বর্তমানে চলমান টার্মিনাল (tty1) আউটপুট এঁকে আমাকে ক্যাপচার করতে হবে (এক্স সার্ভার চলমান)।
উত্তর:
আমি ডাকা এই একটি সরঞ্জাম জুড়ে এসেছি ttylog
। এটা একটা পার্ল প্রোগ্রাম CPAN উপলব্ধ এখানে । এটিতে বেশ কয়েকটি ক্যাভেটস রয়েছে, একটি হ'ল আমি কেবলমাত্র টার্মিনালের সাথে কীভাবে সংযুক্ত করতে পারি তা বুঝতে পারি যে আমার বাক্সে ছড়িয়ে পড়া কেউ এর অংশ হিসাবে তৈরি হয়েছিল। অন্যটি হ'ল আপনাকে এটিকে উন্নত সুবিধাগুলি দিয়ে চালাতে হবে (অর্থাত্ রুট বা সুডো)।
কিন্তু এটি কাজ করে!
TERM # 1 এ আপনার বক্সে প্রথম এসএসএস করুন:
TERM#1% ssh saml@grinchy
এই নতুন টার্মিনালের tty নোট করুন:
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 * ডিভাইসগুলির (ভার্চুয়াল টার্মিনাল) সাথে সম্পর্কিত। এফ 1 = tty1 = vcs1 / vcsa1 এবং আরও। "বর্তমান" ভার্চুয়াল টার্মিনালের জন্য ভিসিএস / ভিসিএসএ টিটিটির মতো।
রুট হিসাবে, আপনি কেবল এই ডিভাইসগুলি (যেমন বিড়াল / দেব / ভিসিএস 2) বিড়াল করতে পারেন, এবং স্ন্যাপশট নেওয়ার মতো সংশ্লিষ্ট ভিটিতে (যেমন / ডিভ / টিটি 2 তে) দেখুন। ভিসিএসএ * ভিসিএস * এর থেকে পৃথক যে এতে তারা টার্মিনালের (পর্দা) মাত্রা সম্পর্কে তথ্য অন্তর্ভুক্ত করে। মনে রাখবেন, এটি পর্দায় প্রদর্শিত অক্ষরের একটি কাঁচা স্ন্যাপশট - টার্মিনালটিতে বরাদ্দ হওয়া মেমরি থেকে সংগ্রহ করা - সুতরাং সুন্দর, সহজে পার্সেবল আউটপুট আশা করবেন না।
ত্রুটিটি হ'ল যদি তথ্যগুলি খুব দ্রুত অতীত হয়ে ওঠে তবে এটি ক্যাপচার করা কঠিন হতে পারে। সম্ভবত লেজ -f / dev / vcs1 কাজ করবে, আপনার যদি বেশ কয়েকটি স্ক্রিনফুলগুলি অনুসরণ করতে হয় (নিজেকে চেষ্টা করে দেখেন না)? এটি প্রথমে কোনও ফাইলটিতে পুনর্নির্দেশ করা সবচেয়ে সহজ হতে পারে। এটি দেখার জন্য কোনও ভিটি (F1-F6) ব্যবহার করা ভাল ধারণাও হতে পারে, কারণ টার্মিনালের একই মাত্রা থাকবে have আমার অভিজ্ঞতায়, ভিসিএস * - ভিসিএসএ * নয় - ডিভাইস ব্যবহার করা ভাল।
যদি এটি কাজ না করে, সম্ভবত কোনও "বড় ভাইরাশ" প্যাকেজ যা কোনও প্রশাসককে টার্মিনালের ক্রিয়াকলাপের দিকে নজর রাখতে সহায়তা করে তা কার্যকর হতে পারে।
PS: আপনি কী ওএস ব্যবহার করবেন তা জিজ্ঞাসা করতে ভুলে গিয়েছিলাম। এটি লিনাক্সের জন্য, যদিও একই রকম ডিভাইসগুলি সম্ভবত অন্যান্য ওএসেও উপস্থিত রয়েছে। ডিভাইসের জন্য ম্যান-পৃষ্ঠাগুলির মধ্যে "ভার্চুয়াল কনসোল মেমরি" অনুসন্ধান করার চেষ্টা করুন।
wlan0
, আমার আসলে একটি ক্যাচ -২২ পরিস্থিতি যেখানে এই স্ক্রিপ্টটি ব্যর্থ হচ্ছে সেখানে ডিবাগ করার চেষ্টা করছে। ধরুন আমি কোনও ইউএসবি হাব ব্যবহার করতে পারি না ... আমার জন্য কোনও উপায় / দেব / টিটি 1 তে চরগুলি পাইপ করার কি উপায় আছে?
/dev/tty1
মূল হিসাবে পাইপ করতে সক্ষম হয়েছি তবে এইগুলি হ'ল স্ক্রিনে অক্ষরগুলি প্রদর্শন করা হয়, সেগুলি প্রবেশ করে না
tty
তাদের সনাক্ত করতে প্রতিটি টার্মিনালে কমান্ডটি ব্যবহার করুন:
$ tty
/dev/pts/0
$ tty
/dev/pts/1
এই টিটিওয়াইকে ধরে নিয়ে, প্রথমটির স্টাডআউটকে দ্বিতীয়টিতে পুনর্নির্দেশ করতে, এটি প্রথম টার্মিনালে চালান:
exec 1>/dev/pts/1
দ্রষ্টব্য: এখন প্রতিটি কমান্ড আউটপুট pts / 1 এ প্রদর্শিত হবে
Pts / 0 এর ডিফল্ট আচরণ stdout পুনরুদ্ধার করতে:
exec 1>/dev/pts/0
একটি প্রদর্শনের জন্য এই ভিডিওটি দেখুন ।
এটি আমার পক্ষে কাজ করেছে:
"এ" কম্পিউটারে কীবোর্ড ব্যবহার করে (যেমন শারীরিক কম্পিউটার যা নিয়ন্ত্রণ করা উচিত) চালনা করুন: screen -q
ssh
কম্পিউটার "বি" থেকে কম্পিউটার "এ" এর সাথে সংযুক্ত হন ।
Ssh সেশনে, টাইপ করুন: screen -ls
সংযোগ করতে একটি সেশন আইডি পেতে ( tty রয়েছে এমন সারিতে 4 টি সংখ্যা )।
উপরের সেশনে এর সাথে সংযুক্ত করুন: screen -x <session id>
... screen -ls
উপরের কমান্ড থেকে প্রাপ্ত সেশন আইডি নম্বরটি ব্যবহার করে ।
"সেশনে" উভয়ই টাইপ করা যেকোন কিছুই "সেশন" এ ঘটবে, সুতরাং উদাহরণস্বরূপ টাইপিং দুটি সেশন screen -d
ছাড়বে।
আর একটি পদ্ধতি হ'ল screen
আপনার স্থানীয় মেশিনে gnu ইউটিলিটি ব্যবহার করা । -L
অপশনটি দিয়ে এটিকে ডাকুন , বা সেই বিকল্পটি ছাড়াই শুরু করুন এবং ^aH
কমান্ড সিকোয়েন্সটি ব্যবহার করুন । হয় পদ্ধতির ফলে সমস্ত ইনপুট এবং আউটপুটকে এমন কোনও ফাইলে লগ করতে হয় screenlog.x
যেখানে x স্ক্রিন নম্বর।
এটি সুবিধাজনক কারণ দূরবর্তী মেশিনে অতিরিক্ত কিছু ইনস্টল করার দরকার নেই।
যেহেতু আমি স্ক্রিপ্টটির সাহায্যে tty1 শুরু করি নি এই স্ক্রিপ্টটি সাহায্য করেছে:
আমি উপরে বার্ড কোপার্পিউডের উত্তরটি ব্যবহার করেছি। "128" হ'ল আমার টিটি 1 এর 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
আগে সর্বদা বিবেচনা করুন ।