কে কীভাবে শারীরিক কনসোল ব্যবহার করছে তা সন্ধান করবেন?


10

বর্তমানে শারীরিক কনসোলে থাকা ব্যবহারকারী (কী-বোর্ড, মাউস এবং গ্রাফিকাল ডিসপ্লেতে কমান্ড রয়েছে) ব্যবহারকারীর নাম - তার জন্য আমি একটি স্ক্রিপ্ট ব্যবহার করতে চাই ?

কে কেবল এক্স চালায় তা আমি জানতে চাই না (যেহেতু বর্তমান কনসোলটি অন্য টার্মিনাল এবং অন্য কোনও ব্যবহারকারীতে স্যুইচ করা যেতে পারে)।


নির্মল করতে:
মত কমান্ড w, whoইত্যাদি দেন যারা যা টার্মিনালে লগ করা হয়। এটি সহজ। আমি জানতে চাই, তবে বর্তমানে শারীরিক কনসোলের (প্রদর্শন, কীবোর্ড ইত্যাদি) মালিক কে। উদাহরণস্বরূপ, যদি দু'জন ব্যবহারকারী প্রদর্শন করে: 0 এবং: 1 এবং আমি ctrl+ alt+ 7এবং ctrl+ alt+ এর সাথে প্রদর্শনগুলির মধ্যে স্যুইচ করতে 8পারি তবে আমি জানতে চাই যে বর্তমানে কোন ব্যবহারকারীর তার প্রদর্শন এবং প্রকৃত, শারীরিক পর্দার মধ্যে সংযোগ রয়েছে? ।


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


তবুও অন্য শোধন:
যাই হোক না কেন কমান্ড, আউটপুট টিপে পরে অবশ্যই আলাদা হতে হবে Ctrl+ + Alt+ + F1(অন্য ভার্চুয়াল কনসোল স্যুইচ)।


এটি কি স্ব-প্রশ্নোত্তর?
জোকারডিনো

না, দুর্ভাগ্যক্রমে।
জানুয়ারী

উত্তর:


6

আমি আশঙ্কা করছি আমি আপনাকে একটি নির্দিষ্ট উত্তর দিতে পারি না (কারণ আমি প্রযুক্তিটি ভালভাবে জানি না) তবে আমি বিশ্বাস করি যে আপনি এটি ডি-বাস এবং কনসোলকিট ব্যবহার করে খুঁজে পেতে পারেন।

উদাহরণস্বরূপ, যখন আমি এক্স থেকে কোনও ভিটি এবং পিছনে স্যুইচ করি, তখন আমি এটি শুনতে পেলাম dbus-monitor:

$ dbus-monitor --system | grep ConsoleKit
signal sender=:1.16 -> dest=(null destination) serial=19039 path=/org/freedesktop/ConsoleKit/Session2; interface=org.freedesktop.ConsoleKit.Session; member=ActiveChanged
signal sender=:1.16 -> dest=(null destination) serial=19040 path=/org/freedesktop/ConsoleKit/Seat1; interface=org.freedesktop.ConsoleKit.Seat; member=ActiveSessionChanged
signal sender=:1.16 -> dest=(null destination) serial=19041 path=/org/freedesktop/ConsoleKit/Session2; interface=org.freedesktop.ConsoleKit.Session; member=ActiveChanged
signal sender=:1.16 -> dest=(null destination) serial=19042 path=/org/freedesktop/ConsoleKit/Seat1; interface=org.freedesktop.ConsoleKit.Seat; member=ActiveSessionChanged
   string "/org/freedesktop/ConsoleKit/Session2"

বিশেষত, আপনি গেটএ্যাকটিভসেশন পদ্ধতিটি ব্যবহার করতে পারেন । এখানে কীভাবে dbus-send(প্রয়োজন হতে পারে sudo):

$ dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Seat1 org.freedesktop.ConsoleKit.Seat.GetActiveSession

তারপরে, আপনার আবেদনের উপর নির্ভর করে, আপনি ফিরে আসা অবজেক্টের বৈশিষ্ট্যগুলি পরীক্ষা করতে চান, যা একটি সেশনের অবজেক্টের পথ হতে হবে ।


3
খুব সহায়ক, আমি মনে করি। আমি যখন সেশনগুলি স্যুইচ করি তখন উত্তরটি একই সাথে স্যুইচ করে। বিশেষত আমি নিম্নলিখিত কমান্ডটি প্রবেশ করতে পারলাম: dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUserযা বর্তমান ব্যবহারকারী-আইডি দিয়ে উত্তর দেয়। সেখান থেকে গ্রন্থাগার ফাংশন getpwuid ব্যবহারকারীর নাম পেতে পারে।
জন এস গ্রুবার

1
এটি অবশ্যই আমি উত্তরটি খুঁজছিলাম। আপনাকে অনেক ধন্যবাদ!
জানুয়ারী

5
[geek@atremis ~]$ w

 20:02:02 up 2 days,  8:37,  3 users,  load average: 0.00, 0.01, 0.00

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

geek     tty1     :0               Thu11    2days 35.11s  0.18s pam: gdm-passwo

geek     pts/0    athena           Fri22   21:04m  0.03s  0.03s -bash

geek     pts/1    blackbeauty      20:02    0.00s  0.14s  0.10s w

[geek@atremis ~]$

কে লগ ইন হয়েছে তা দেখতে আপনি w কমান্ডটি ব্যবহার করতে পারেন। অলস সময় এবং আপনাকে কী চালানো উচিত তা বলা উচিত - এই ক্ষেত্রে জিডিএম একটি সক্রিয় লগ ইন ইঙ্গিত করে এবং অলস সময়টি নির্দেশ করে যে ব্যবহারকারী 2 দিনের মধ্যে সিস্টেমে নেই। এটি ব্ল্যাকবিউটি থেকে লগইনটির সাথে বৈসাদৃশ্য করুন, যার 0.00 অলস সময় রয়েছে, যা বর্তমানে এটি ব্যবহৃত হচ্ছে তা নির্দেশ করে।


না, এটি কেবল আমাকে বলে - আপনি যেমন লিখেছেন - কোন টার্মিনালে লগ ইন হয়েছে । একটি স্ক্রিপ্ট ব্যবহার করতে, আমি জানতে চাই যে কোন ব্যবহারকারী শারীরিক কনসোলের মালিক (কিবোর্ড, প্রদর্শন ইত্যাদি)
জানুয়ারী

পিএস নিষ্ক্রিয় সময়টিও অ-তথ্যমূলক; আমি একটি স্ক্রিনসেভারের সাথে ফিডল স্ক্রিপ্টে কাজ করছি, তবে আমি জানতে চাই যে কোন ব্যবহারকারী আসলে প্রদর্শিত স্ক্রিনসভারটি চালাচ্ছেন ।
জানুয়ারী

টিটিওয়াই এবং 'কী' এখানে কাজ করতে পারে, আপনাকে কেবল প্রয়োজনীয় বিটগুলি বের করতে হবে।
যাত্রামন গীক

ওম, না, কারণ এটি যেখানেই চলতে পারে (পটভূমিতে, অন্য একটি এক্স সার্ভারে, ভার্চুয়াল মেশিনে)
জানুয়ারী


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.