我创建了一个 PHP 应用程序,可以创建新的 Linux 用户帐户,并在几个时期后自动过期。
在 Google 上搜索“如何在修复 periode 后自动删除 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
国际日期格式 ( ) 的日期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"