このコマンドを自動的に実行したいです(簡単です)。
~/dehydrated/dehydrated --cron --domain www.mydomain.com --out . --challenge http-01
問題は、証明書が更新されるたびに現在のホストに電子メールを送信してバックエンドで変更を実装できるようにする必要があることです。 (非常に非効率的ですが、rootアクセス権しかないため、他の方法はありません。)
上記のコマンドを実行すると、現在の日付が証明書の有効期限から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