私は次の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を実行する際にいくつかの興味深い問題があります。そうしたくないと思いますが、それは別の問題です。