我想编写一个启动脚本,如果它在本地计算机上运行,则该脚本将执行其任务,但如果从远程 xrdp 会话调用它,则不会执行该任务。
If Local
{
do something
}
If remote
{
do something else
}
如何确定会话是本地启动还是远程启动?
答案1
不幸的是,这是一个非常困难的问题。所以在一般情况下,不幸的是答案是否定的。查看 $DISPLAY 是不够的,因为这仅意味着存在某种形式的本地 X 服务器(如 xrdp),而不是用户实际位于计算机上。
我知道的唯一选项是 ConsoleKit,它具有“is-local”属性。不幸的是我不知道有什么简单的方法可以从 shell 脚本中检查它。您也许可以使用“ck-list-sessions”做一些事情。
另请注意,它有一个错误,您可以轻松地欺骗它认为远程会话是本地的。
如果安全性不是那么重要,那么我建议检查 xrdp 是否设置了一些仅适用于此类会话的特殊环境变量。只需在终端中运行“env”,您就会看到可用的内容。