Cómo crear un usuario de Linux con vencimiento automático después del período de reparación

Cómo crear un usuario de Linux con vencimiento automático después del período de reparación

Creé una aplicación PHP que se puede crear una nueva cuenta de usuario de Linux con vencimiento automático después de varios períodos.

Después de buscar en Google sobre 'Cómo automatizar la eliminación de usuarios de Linux después de arreglar el período', encontré esta respuesta:https://unix.stackexchange.com/a/80971/224583

Pero no sabía cómo hacerlo, por ejemplo crear una cuenta nueva y caducaba después de 10 meses, o 5 meses, etc.

Mi pregunta es cómo convertir mes a día, por ejemplo doy 5 meses y convierto días de cinco meses. ¿O alguna solución aparte de mi pregunta?

Respuesta1

La opción de caducidad en la useraddutilidad requiere una fecha especificada en el formato YYYY-MM-DD.

Puedes calcular esa fecha usando la -dopción del datecomando. Usando su ejemplo de escenario de 5 meses:

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

Respuesta2

El -ecambio de useraddespera una fecha en el formato de fecha internacional ( YYYY-MM-DD), como se puede obtener de su página de manual:

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

Ahora simplemente tienes que indicar la fecha en que se supone que expira la cuenta. Puedes hacer este cálculo en PHP. La respuesta a la que se vinculó lo hace utilizando una herramienta de línea de comando estándar, por lo que no es necesario utilizar un lenguaje de alto nivel.

Aquí hay un código de ejemplo de cómo hacerlo en 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);

Simplemente complete las variables en el bloque superior. Los completé para tu ejemplo de 10 meses. También puedes retroceder en el tiempo. Por ejemplo, si desea que caduque en 7 meses menos 4 días, puede configurar $diffMonth = 7;y $diffDay = -4;.

Luego, pase el valor de fecha ( 2018-02-09cuando se ejecute hoy (excepto si vive en Estados Unidos, entonces es un día antes porque todavía estamos usando un sistema horario retrasado con zonas horarias)) a su script bash.

Ejemplo de código bash:

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

información relacionada