der*_*ert 2 windows windows-xp nagios snmp
我们有一台 XP 机器,它在清晨运行计划任务,不幸的是必须登录到某个用户的桌面才能工作。不幸的是,该用户有时会被注销——要么是因为管理员登录(并且忘记重新登录正确的用户),要么是因为它被重新启动以应用安全更新等。
我想让 Nagios 监控当前登录的用户,以确认它是正确的。Nagios 在 Linux 上运行。
到目前为止,我已经为当前用户寻找了一个 SNMP 变量;我没有运气。我尝试并为用户名搜索了它,并且还做了登录前和登录后的操作,并检查了差异,但没有发现任何有用的信息。snmpbulkwalk -m all -v2c -c community machine
我检查了net命令(来自 Samba),但我在那里没有看到任何东西——尽管我承认我可能错过了一些东西。各种session选项似乎只显示net会话(即使我使用域管理员帐户)。
%WINDIR%\System32\dllcache\query.exe session 将为您提供 WinXP 上所有当前登录用户的列表。
出于某种原因,在我的 WinXP 测试机器上,query.exe 不在我的路径环境变量中,所以这就是我指定整个路径的原因。

如果您需要能够通过 RPC/DCOM 远程获取此信息的东西,请查看我写的一些内容:
http://myotherpcisacloud.com/post/2013/01/16/Usersexe-v1003.aspx
http://www.myotherpcisacloud.com/post/2013/01/13/Getting-RDP-Sessions-with-Client-Computer-Name.aspx
顺便说一下,您需要尽快退出 XP。它很旧了。
编辑:好的,我会给你另一种选择,因为这些都没有帮助你。您想使用 Linux 机器通过网络查询这台 WinXP 机器。您想使用 WMI。您已找到适用于 Linux 的 WMI 客户端。到现在为止还挺好。
这将使您通过 WMI WQL 查询当前登录到本地或远程计算机的用户。我在Powershell中写了这个。抱歉,我不会(阅读:不能)为您将其转换为 Perl 或 Bash,但只要您可以执行 WQL 查询,概念仍然相同:
$Sessions = Get-WMIObject -Query "SELECT * FROM Win32_LogonSession WHERE LogonType=2 OR LogonType=10"
Foreach($Session In $Sessions)
{
If($Session -AND $Session.PSObject.Properties.Match('LogonId').Count)
{
Get-WMIObject -Query "Associators Of {Win32_LogonSession.LogonId=$($Session.LogonId)} WHERE AssocClass=Win32_LoggedOnUser Role=Dependent"
}
}
Run Code Online (Sandbox Code Playgroud)
2 和 10 的登录类型涵盖本地和远程交互会话,但不包括服务登录、网络登录或批量登录。
是的,您确实需要访问 WinXP 计算机的权限。它不仅仅是为匿名网络进程提供所有这些数据。WinXP上的本地组不是很细,因为WinXP很老了,它的安全性远不如现代版本的Windows...我的意思是将你的网络监控用户放在WinXP机器的本地Admins组中可能是你最好的选择。但是,如果您仍然想遵循最小权限原则,我建议您,在这种情况下,您可以使用 WMI 控制台 wmimgmt.msc,并将权限设置为您想要分配权限的任何帐户。
| 归档时间: |
|
| 查看次数: |
5641 次 |
| 最近记录: |