So erstellen Sie einen Linux-Benutzer, der nach einer festgelegten Frist automatisch abläuft

So erstellen Sie einen Linux-Benutzer, der nach einer festgelegten Frist automatisch abläuft

Ich habe eine PHP-Anwendung erstellt, mit der neue Linux-Benutzerkonten erstellt werden können, die nach einiger Zeit automatisch ablaufen.

Nach der Suche bei Google nach „So entfernen Sie Linux-Benutzer nach dem Fixieren des Zeitraums automatisch“ fand ich diese Antwort:https://unix.stackexchange.com/a/80971/224583

Ich wusste jedoch nicht, wie das geht. Beispielsweise kann ich ein neues Konto erstellen, das nach 10 Monaten, 5 Monaten usw. abläuft.

Meine Frage ist, wie man Monate in Tage umrechnet. Beispiel: Ich gebe 5 Monate ein und rechne die Anzahl der Tage von fünf Monaten um. Oder irgendwelche Lösungen außer meiner Frage?

Antwort1

Die Ablaufoption im useraddDienstprogramm erfordert ein im Format angegebenes Datum YYYY-MM-DD.

Sie können dieses Datum mit der -dOption des dateBefehls berechnen. Verwenden Sie dazu Ihr 5-Monats-Szenariobeispiel:

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

Antwort2

Der -eSchalter von useradderwartet ein Datum im internationalen Datumsformat ( YYYY-MM-DD), wie aus der Manpage von ersichtlich:

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

Sie müssen nun lediglich das Datum angeben, an dem das Konto ablaufen soll. Sie können diese Berechnung in PHP durchführen. Die Antwort, auf die Sie verlinkt haben, führt dies mithilfe eines Standard-Befehlszeilentools aus, sodass keine höhere Programmiersprache verwendet werden muss.

Hier ist ein Beispielcode, wie es in PHP funktioniert:

$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);

Füllen Sie einfach die Variablen im obersten Block aus. Ich habe sie für Ihr 10-Monats-Beispiel ausgefüllt. Sie können auch in der Zeit zurückgehen. Wenn Sie beispielsweise möchten, dass es in 7 Monaten minus 4 Tagen abläuft, können Sie $diffMonth = 7;und festlegen $diffDay = -4;.

Übergeben Sie dann den Datumswert ( 2018-02-09bei Ausführung heute (außer wenn Sie in Amerika leben, dann ist es einen Tag früher, weil wir immer noch ein verzögertes Zeitsystem mit Zeitzonen verwenden)) an Ihr Bash-Skript.

Beispiel-Bash-Code:

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

verwandte Informationen