我正在编写一些脚本,使远程连接到 Windows 2003 服务器更加方便用户使用,在此过程中,我想查看谁已经登录。在 Windows 中,我可以使用 qwinsta.exe 来执行此操作,即使对于远程服务器也是如此。因此它以某种方式暴露出来,但我找不到与 Unix 匹配的命令行工具。
如果缺少这样的工具,我可以在机器上安装一个 ssh 服务器并远程调用它,解析输出,或者编写一个我自己的小服务,如果我不想进行全面的 ssh 访问,该服务将通过 http 公开它。
我是否必须这样做,或者是否已经有可以远程查询终端服务的工具?
答案1
如果你想通过简单的命令行访问 Windows 服务器,
可以使用自由SSHd为了那个原因。
它将允许您使用客户端登录 Windows Serverssh
并远程运行命令。然后您可以运行qwinsta.exe
并使用它的输出。
答案2
如果你能找到一种合适的方法从非 Windows 主机查询 Windows WMI(并且有一些可用的方法,例如这是适用于 Linux 的),然后您可以通过查询获取当前会话Win32_登录会话。此方法的缺点是 WMI 服务需要在您的目标上处于活动状态。
另一个(可能更简单的)替代方法是正如您所提到的,使用 SSH 连接在本地运行 qwinsta 命令,然后获取/解析该输出。
当谈到编程时,stack overflow 上的那些人都很聪明,他们可能会有更多的见解。
答案3
我很困惑,你是想查看谁登录了 unix 计算机,还是谁登录了 windows 计算机。对于 Unix,只需使用 who。