wgetを使用して2つのCronジョブをcrontabに配置します。

wgetを使用して2つのCronジョブをcrontabに配置します。

私は次の2つのCronタスクを配置しようとしています。

0 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin  --repos extended,standard,unsupported upgradeall

30 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin reload

実行できるようにリポジトリに

wget www.website.com cronjob.(zip or text)

crontabに注入できるようにどのように保存してどうすればよいですか?

簡単ならごめんなさい。しかし、私は非常に初心者であり、他のWebリソースは役に立ちませんでした。

答え1

これはセキュリティ上の大きなリスクですが、

wget www.website.com cronjob.txt
crontab -u username cronjob.txt

しかし、crontabは正しく見えません。 sudo、cronジョブをインストールしたユーザーとして実行するにはなぜ必要ですか?したがって、この行をアスタリスクのcrontabに入れることをお勧めします。

sudo crontab -u asterisk 

その後、追加

0 3 * * *   /var/lib/asterisk/bin/module_admin  --repos extended,standard,unsupported upgradeall

30 3 * * *  /var/lib/asterisk/bin/module_admin reload

答え2

wget -O - www.website.com/cronjob.gz|zcat|sudo tee -a /etc/crontab

または

crontab -l | cat - <(wget -O - www.website.com/cronjob.gz|zcat)| crontab -

これらのコマンドの欠点は、コマンドが存在しないことを確認しないことです。 crontab.dまたはcron.dディレクトリ(存在する場合)を使用し、使用しているサービスを含むファイルを生成するのが最善です。別のオプションは、次のようなよりクールなスクリプトです。

grep '^### Next three lines added by script 456' /etc/crontab && exit
sudo tee -a /etc/crontab <<< EOF
0 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin  --repos extended,standard,unsupported upgradeall
30 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin reload
EOF

そしてそれを次のように呼んでください。

wget -O - www.website.com/script.gz|zcat|bash

または

bash <(wget -O - www.website.com/script.gz|zcat)

PS cronでsudoを実行する際にいくつかの興味深い問題があります。そうしたくないと思いますが、それは別の問題です。

関連情報