如何查找上次访问 Windows 和 Linux 的服务器

如何查找上次访问 Windows 和 Linux 的服务器

我试图查找过去 1 个月内是否有人登录过服务器。服务器包括 Windows 和 Linux。如果有人已经有可用的脚本或关于如何继续的建议,请帮忙。

对于 Linux,我曾尝试使用last command output,但我不知道如何将其放入也可以从 Windows 服务器获取输出的相同脚本中,而且我也在寻找适用于 Windows 的命令。

答案1

Linux 部分很简单:使用 putty 设置连接(特别是无密码 ssh 的密钥),然后像这样运行它:

putty -ssh user@server -m 'last|egrep -v "(user|reboot)"|head -n 1'

对于 Windows:您将在事件查看器的安全日志中找到所有信息。您可以使用 powershell 命令行Get-Wineventeventquery.vbs(您将在 中找到它%WINDIR%\System32)。但是,为事件日志编写过滤器并不快。

更新:

回答您的以下问题(因为评论没有足够的文字):

last -n 1000 --since $(date --date="last month" +%Y-%m-%d)|grep -v reboot|wc -l将返回上个月的登录次数加 2(空行加wtmp begins [...])。

在 Windows 中,您可以使用Get-WinEvent -FilterHashTable @{LogName="system";StartTime=$((Get-Date).AddMonths(-1));ID=4624}。这里的问题是有很多登录(Interactive 和 RemoteInteractive 可能是您想要的,但还有服务、网络(例如对于 SMB)...)。

因此,您必须根据需要进行过滤。您可能还想过滤帐户。在这些情况下,将-FilterHashTable和 的值替换为-FilterXPath-FilterXml

其优点-FilterXml是,您可以使用事件日志查看器逐步构建过滤器。起点是这篇 Technet 帖子。我还推荐Get-WinEvent 参考

相关内容