Saya ingin menggunakan skrip untuk mengetahui nama pengguna - pengguna yang saat ini ada di konsol fisik (yang memiliki perintah keyboard, mouse, dan tampilan grafis)?
Saya tidak hanya ingin tahu siapa yang menjalankan X (karena konsol saat ini dapat dialihkan ke terminal lain dan pengguna lain).
Untuk memperjelas:
Perintah seperti w
, who
dll. Menunjukkan siapa yang login di terminal mana. Ini sederhana. Namun saya ingin tahu, siapa yang memiliki konsol fisik (layar, keyboard, dll.). Misalnya, jika dua pengguna menjalankan layar: 0 dan: 1, dan saya dapat beralih di antara layar dengan ctrl+ alt+ 7dan ctrl+ alt+ 8, saya ingin tahu pengguna mana yang saat ini memiliki koneksi antara layarnya dan layar fisik yang sebenarnya. .
Satu klarifikasi lagi:
Saya tidak tertarik mengetahui nama pengguna saya sendiri . Saya memiliki skrip, berjalan sebagai pengguna atau root lain, yang perlu tahu siapa yang menggunakan tampilan fisik . Mungkin ada beberapa sesi X yang dijalankan oleh pengguna yang berbeda, beberapa di antaranya divirtualisasikan, beberapa di antaranya terhubung ke server X jarak jauh, tetapi saya hanya tertarik pada salah satu yang benar-benar menampilkan output pada monitor.
Namun klarifikasi lain:
Apa pun perintahnya, output harus berbeda setelah menekan Ctrl+ Alt+ F1(beralih ke konsol virtual lain).
Jawaban:
Saya khawatir saya tidak bisa memberikan jawaban spesifik (karena saya tidak tahu teknologinya dengan baik), tetapi saya yakin Anda bisa mengetahuinya menggunakan D-Bus dan ConsoleKit.
Misalnya, ketika saya beralih dari X ke VT dan kembali, saya mendengarkan ini
dbus-monitor
:Khususnya, Anda bisa menggunakan metode GetActiveSession . Begini caranya dengan
dbus-send
(mungkin memerlukansudo
):Kemudian, tergantung pada aplikasi Anda, Anda ingin memeriksa properti objek yang dikembalikan, yang seharusnya menjadi path objek ke Sesi .
sumber
dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.GetUser
yang menjawab dengan user-id saat ini. Dari sana fungsi perpustakaan getpwuid bisa mendapatkan nama pengguna.Anda dapat menggunakan perintah w untuk melihat siapa yang masuk. Waktu idle dan apa yang harus memberi tahu Anda apa yang sedang dijalankan - dalam hal ini gdm menunjukkan login aktif, dan waktu idle menunjukkan pengguna belum berada di sistem dalam 2 hari. Bandingkan ini dengan login dari blackbeauty, yang memiliki waktu idle 0,00, yang menunjukkan saat ini sedang digunakan.
sumber
Ada banyak cara:
whoami
w
echo $USER
logname
sumber
Perintah lain adalah
Ini menunjukkan nama pengguna logeed saat ini
sumber