私は新しいLinuxユーザーアカウントを作成し、数時間後に自動的に期限切れになるPHPアプリケーションを作成しました。
Googleが「期間を変更した後にLinuxユーザーを自動的に削除する方法」を検索し、この回答を見つけました。https://unix.stackexchange.com/a/80971/224583
しかし、新しいアカウントを作成し、10か月または5ヶ月後に期限切れになるなど、どのように作成するのかわかりません。
私の質問は、月を日に変換する方法です。たとえば、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
国際日付形式(IDD)の日付が必要で、対応する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
日付値(今日実行している場合(米国にいない限りタイムゾーンを含む遅延時間システムを使用しているため、日付が1日前になる))をbashスクリプトに渡します。
Bashコードの例:
useradd -e "2018-02-09" "rizal"