이 명령을 자동으로 실행하고 싶습니다(간단합니다).
~/dehydrated/dehydrated --cron --domain www.mydomain.com --out . --challenge http-01
문제는 인증서가 갱신될 때마다 현재 호스트에 이메일을 보내 백엔드에서 변경 사항을 구현할 수 있도록 해야 한다는 것입니다. (아주 비효율적이지만 루트 액세스 권한만 있기 때문에 다른 방법은 없습니다.)
위 명령을 실행하면 현재 날짜가 인증서 만료 날짜로부터 7일 이상 남은지/미만인지 확인합니다. 시차가 크면 다음이 반환됩니다.
Processing www.mydomain.com
+ Checking domain name(s) of existing cert... unchanged.
+ Checking expire date of existing cert...
+ Valid till May 9 19:27:44 2018 GMT (Longer than 7 days). Skipping renew!
그리고 시차가 작아지면 인증서가 업데이트됩니다.
내가 원하는 것은 매일 스크립트를 실행하는 것뿐입니다. 출력이 "갱신 건너뛰기"일 때 아무것도 하지 않고 닫기를 원하며, 인증서가하다&&
업데이트, 호스트에 이메일을 보내기 위해 다른 명령(아마도 ?를 사용하여)을 연결하고 싶습니다 . 관리자 명령( )을 사용하여 Python에서 python manage.py email_hosts
이것을 설정했습니다 .
답변1
~/dehydrated/dehydrated --cron --domain www.mydomain.com --out . --challenge http-01 | grep -q 'Skipping renew' || python manage.py email_hosts
설명하다
|
: 초기 명령의 출력을 다음 명령으로 파이프합니다. 이는 표준 출력에 쓴다고 가정합니다.grep -q 'Skipping renew'
: 명령 출력에서Skipping renew
파이프를 검색하기 전|
. "자동" 모드에서 실행됩니다-q
. 즉, 일치 항목이 실제로 명령줄에 표시되지 않습니다.||
이전 명령이 실패한 경우(예: 일치하지 않음) 다음 명령(예: 이메일)을 실행합니다. 이것은 본질적으로 반대입니다&&
. 이전 명령이 일치하는 경우 email 명령은 실행되지 않습니다.
시험
다음 명령을 사용하여 명령 흐름의 논리를 테스트할 수도 있습니다.
echo 'Skipping renew' | grep -q 'Skipping renew' || echo Mailing
echo 'Something else' | grep -q 'Skipping renew' || echo Mailing