Vnc

辨識本地和遠端會話

  • October 11, 2012

我想編寫一個啟動腳本,如果它在本地機器上執行,它將執行它的任務,但如果它是從遠端 xrdp 會話呼叫的,則不會。

If Local
{
do something
}
If remote
{
do something else
}

如何確定會話是本地啟動還是遠端啟動?

不幸的是,這是一個非常困難的問題。所以在一般情況下,不幸的是,答案是否定的。僅查看 $DISPLAY 是不夠的,因為這僅意味著存在某種形式的本地 X 伺服器(如 xrdp),而不是使用者實際在機器上。

我知道的唯一選擇是 ConsoleKit,它具有“is-local”屬性。不幸的是,我不知道有任何簡單的方法可以從 shell 腳本中檢查它。您也許可以使用“ck-list-sessions”做一些事情。

另請注意,它有一個錯誤,您可以輕鬆地欺騙它認為遠端會話是本地的。

如果安全性不是那麼重要,那麼我建議檢查 xrdp 是否設置了一些僅存在於那種會話的特殊環境變數。只需在終端中執行“env”,您就會看到可用的內容。

引用自:https://unix.stackexchange.com/questions/50081