Как создать пользователя Linux с автоматическим истечением срока действия после исправления периода

Как создать пользователя Linux с автоматическим истечением срока действия после исправления периода

Я создал PHP-приложение, которое может создавать новые учетные записи пользователей Linux с автоматическим истечением срока действия по истечении нескольких периодов.

После поиска в Google по теме «Как автоматизировать удаление пользователя Linux после исправления периода» я нашел этот ответ,https://unix.stackexchange.com/a/80971/224583

Но я не знал, как сделать так, чтобы, например, создать новую учетную запись, срок действия которой истекал через 10 месяцев или 5 месяцев и т. д.

Мой вопрос, как преобразовать месяц в день, например, я даю 5 месяцев и преобразовываю количество дней пяти месяцев. Или есть какие-нибудь решения помимо моего вопроса?

решение1

Для параметра истечения срока действия в useraddутилите требуется указать дату в формате YYYY-MM-DD.

Вы можете рассчитать эту дату, используя -dопцию команды date. Используя пример вашего сценария на 5 месяцев:

$ date +"%Y-%m-%d"
2017-04-08
$ date -d "5 months" +"%Y-%m-%d"
2017-09-08

решение2

Переключатель -eожидает useraddдату в международном формате ( YYYY-MM-DD), как можно узнать из его страницы руководства:

   -e, --expiredate EXPIRE_DATE
       The date on which the user account will be disabled. The date is
       specified in the format YYYY-MM-DD.
       [...]

Теперь вам просто нужно указать дату, когда должен истечь срок действия учетной записи. Вы можете выполнить этот расчет на PHP. Ответ, на который вы ссылаетесь, делает это с помощью стандартного инструмента командной строки, поэтому не нужно использовать язык высокого уровня.

Вот пример кода того, как это сделать на PHP:

$diffHour = 0;
$diffMinute = 0;
$diffSecond = 0;
$diffMonth = 10;
$diffDay = 0;
$diffYear = 0;

$hour = date("H") + $diffHour;
$minute = date("i") + $diffMinute;
$second = date("s") + $diffSecond;
$month = date("n") + $diffMonth;
$day = date("j") + $diffDay;
$year = date("Y") + $diffYear;

$time = mktime($hour, $minute, $second, $month, $day, $year);

$date = date("Y-m-d", $time);

Просто заполните переменные в самом верхнем блоке. Я заполнил их для вашего примера на 10 месяцев. Вы также можете вернуться назад во времени. Например, если вы хотите, чтобы срок действия истек через 7 месяцев минус 4 дня, вы можете установить $diffMonth = 7;и $diffDay = -4;.

Затем передайте значение даты ( 2018-02-09при запуске сегодня (за исключением случаев, когда вы живете в Америке, тогда дата будет на день раньше, поскольку мы все еще используем устаревшую систему времени с часовыми поясами)) в ваш bash-скрипт.

Пример bash-кода:

useradd -e "2018-02-09" "rizal"

Связанный контент