wget을 사용하여 두 개의 Cron 작업을 crontab에 넣습니다.

wget을 사용하여 두 개의 Cron 작업을 crontab에 넣습니다.

저는 다음 두 가지 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에 주입할 수 있도록 어떻게 저장하고 어떻게 해야 합니까?

간단하다면 죄송합니다. 하지만 저는 매우 초보이고 다른 웹 리소스가 도움이 되지 않았습니다.

답변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를 실행하는 데 몇 가지 흥미로운 문제가 있습니다. 그렇게 하고 싶지 않을 것 같지만 그건 다른 문제입니다.

관련 정보