2017-08-16 54 views
1

有沒有辦法找出誰在控制檯上登錄到X?誰在DISPLAY登錄:0

在Ubuntu的16.04我可以使用who它告訴你,你的位置,就像這個例子test1:是在X控制檯,而我與ssh登錄登錄。

$ who 
test1 tty7   2017-08-12 02:00 (:0) 
ulf  pts/1  2017-08-16 13:56 (192.168.1.20) 

但在雙方的Debian 4.0和OpenBSD 5.1 who不會告訴我這一點,並輸出略有不同。

是否有穩定的方式可以在大多數系統上工作,以獲取登錄在X控制檯的用戶?

+0

這看起來更像是一個系統管理問題,而不是一個編程問題。 –

+0

張貼到服務器錯誤:https://serverfault.com/q/869125/243665 – UlfR

回答

0

從字段可以顯示在大多數系統與w -f

+0

手冊頁說'默認爲發佈是爲了不打印,儘管你的系統管理員或分配維護者可能已編譯版本,其中from字段默認顯示。「並且在Ubuntu和Debian發行版中已經打開並在OpenBSD中啓動,並告訴我'-f ...不再支持'。但是'w'無論如何對我無能爲力。 – UlfR

+0

'last -f/var/log/utmp'怎麼樣? – piarston

0

logname可能會滿足您的需求。它顯示最初登錄的用戶,即使在su之後。見POSIX: logname

日誌名實用程序應將用戶的登錄名寫入標準輸出。登錄名應該是由POSIX.1-2008的System Interfaces卷中定義的getlogin()函數返回的字符串。在getlogin()函數失敗的情況下,日誌名實用程序應將診斷消息寫入標準錯誤,並以非零退出狀態退出。

我發現一些終端仿真器無法給出正確的反饋,例如Ubuntu 16.04中的gnome-terminal。我不確定這是Ubuntu的bug還是gnome-terminal的版本; Fedora上的gnome-terminal和debian沒有問題。

有一些討論認爲logname可能被惡意應用程序僞造,但我沒有再次找到鏈接,我認爲這是一個侏儒開發討論。

+0

不是我正在尋找的東西!如果用戶'bert'坐在計算機'foo'的前面並登錄,他就在_X-console_(或任何被調用的)。當我同時用'ssh'登錄''foo'時,'logname'會告訴'ulf',而我想要'bert'。 – UlfR

相關問題