Назад | Перейти на главную страницу

Как узнать последний раз, когда к серверу обращались как Windows, так и Linux

Я пытаюсь выяснить, заходил ли кто-нибудь на серверы за последний месяц или нет. Серверы включают как Windows, так и Linux. Пожалуйста, помогите, если у кого-то уже есть рабочий сценарий или предложение, как действовать.

Для Linux я пробовал использовать last command output, но я не знаю, как поместить его в тот же скрипт, который также может получать вывод с серверов Windows, также я ищу команды для Windows.

Часть linux проста: настройте соединение с помощью putty (особенно ключей для ssh без пароля), а затем запустите его следующим образом:

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

Для Windows: вы найдете всю информацию в журнале безопасности в средстве просмотра событий. Вы можете использовать командлет PowerShell Get-Winevent или eventquery.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, но также Service, Network (например, для SMB), ...).

Так что вам придется отфильтровать их в соответствии с вашими потребностями. Вы также можете отфильтровать учетные записи. В этих случаях замените -FilterHashTable и это ценность с -FilterXPath или -FilterXml.

Преимущество -FilterXml заключается в том, что вы можете использовать программу просмотра журнала событий для постепенного построения фильтра. Отправной точкой является этот пост Technet. Я также рекомендую Справка по Get-WinEvent