Вопрос или проблема
Я являюсь корневым пользователем и настраиваю меню для другого пользователя. Этот другой пользователь получит только это меню.
Есть две взаимосвязанные опции: первая опция – поиск пользователей. Код, который я получил:
last | awk '{print $1,$4,$5,$6,$7} '
Я проверил этот код, и он работает, он показывает имена пользователей и день, когда они в последний раз входили в систему.
Для второй опции: я хочу иметь возможность установить дату и затем удалить пользователей, которые не были активны с той даты, используя вывод предыдущей команды.
Я использую Linux Mint и текстовый редактор Vim.
Вы можете сделать это так:
root@host# lastlog -b Num_Days_Since_Last_Login | egrep -v "^Username|Never logged in" | awk '{print $1}' | xargs -i userdel {}
Где Num_Days_Since_Last_Login – это целое число дней с последнего входа…
Полное решение:
#!/bin/bash
maxdate=$(date -d "$1" +%s) || exit 1
daysdate=$((($(date +%s)-maxdate)/(3600*24)))
LANG=C lastlog -b $daysdate -u 1000- |
awk 'NR>1{print $1}' |
xargs -n1 echo userdel
Проверьте это и удалите echo
, чтобы сделать это реально™. Пример использования:
./script.sh 'Пт Дек 5 17:00:06 CET 2013'
Ответ или решение
Удаление нескольких пользователей в Linux: пошаговое руководство
Удаление неактивных пользователей – важная задача в администрировании систем на базе Linux. В этом руководстве мы рассмотрим, как удалить пользователей, которые не входили в систему с определенной даты, используя предоставленный код и интеграцию командной строки.
Шаг 1: Подготовка скрипта
Для начала, создадим Bash-скрипт, который будет выполнять проверку последних входов пользователей и удалять тех, кто не входил в систему с заданной даты.
#!/bin/bash
# Конвертируем переданную дату в формат Unix timestamp
maxdate=$(date -d "$1" +%s) || exit 1
# Вычисляем количество дней с последнего входа
daysdate=$((($(date +%s)-maxdate)/(3600*24)))
# Выводим список пользователей, не входивших в систему более указанного количества дней
LANG=C lastlog -b $daysdate -u 1000- |
awk 'NR>1{print $1}' |
xargs -n1 echo userdel
Шаг 2: Параметры скрипта
- Аргумент скрипта: Он принимает одну дату в качестве аргумента в формате:
'Пн Дек 5 17:00:06 CET 2013'
. - Проверка: Дата конвертируется в формат Unix timestamp для дальнейших вычислений.
- Удаление пользователей: Запускается команда
lastlog
, чтобы получить список пользователей, не активировавшихся с указанной даты.
Шаг 3: Тестирование без удаления
Перед тем как удалить пользователей, обязательно протестируйте скрипт, чтобы избежать потери данных. Воспользуйтесь командой echo
, чтобы увидеть, какие пользователи будут удалены.
./script.sh 'Пн Дек 5 17:00:06 CET 2013'
На выходе вы получите список команд userdel
, но сами учетные записи при этом не будут удалены.
Шаг 4: Реальное удаление пользователей
После того как все будет протестировано и вы будете уверены в корректности работы скрипта, можно убрать команду echo
, чтобы выполнить удаление пользователей:
# Замена строки с echo
xargs -n1 userdel
Теперь скрипт будет фактически удалять пользователей, что делает его готовым к использованию в реальных условиях.
Заключение
Удаление неактивных пользователей – это один из ключевых аспектов поддержания безопасности и порядока в системе. Приведенный скрипт обеспечивает простой и эффективный способ идентифицировать и удалять таких пользователей. Убедитесь, что вы понимаете действия этого скрипта, прежде чем запускать его в живой системе, чтобы избежать нежелательной утраты данных.
Эта инструкция поможет вам выполнять эффективное администрирование вашей Linux-системы, гарантируя, что неактивные учетные записи больше не создают risk for security of your system.