저는 새로운 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
날짜 값(오늘 실행하는 경우(미국에 거주하지 않는 한 시간대가 포함된 지연 시간 시스템을 계속 사용하고 있으므로 날짜가 하루 전이 됩니다))을 bash 스크립트에 전달합니다.
Bash 코드 예:
useradd -e "2018-02-09" "rizal"