识别本地和远程会话

识别本地和远程会话

我想编写一个启动脚本,如果它在本地计算机上运行,​​则该脚本将执行其任务,但如果从远程 xrdp 会话调用它,则不会执行该任务。

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

如何确定会话是本地启动还是远程启动?

答案1

不幸的是,这是一个非常困难的问题。所以在一般情况下,不幸的是答案是否定的。查看 $DISPLAY 是不够的,因为这仅意味着存在某种形式的本地 X 服务器(如 xrdp),而不是用户实际位于计算机上。

我知道的唯一选项是 ConsoleKit,它具有“is-local”属性。不幸的是我不知道有什么简单的方法可以从 shell 脚本中检查它。您也许可以使用“ck-list-sessions”做一些事情。

另请注意,它有一个错误,您可以轻松地欺骗它认为远程会话是本地的。

如果安全性不是那么重要,那么我建议检查 xrdp 是否设置了一些仅适用于此类会话的特殊环境变量。只需在终端中运行“env”,您就会看到可用的内容。

相关内容