원격 서버의 파일을 자동으로 가져와서 crontab 파일로 바꾸는 스크립트를 작성하려고 하는데 권한이 거부되었습니다.
내 생각은 이에 대한 쉘 함수를 만드는 것입니다.
update_crontab() {
SSH_HOST=$1
FOLDER=$2
{
if ssh -o "BatchMode yes" $SSH_SUDO_WHITOUT_PASS@$SSH_HOST "[ -f $FOLDER/crontab ]"
then
# Folder exists replace crontab with new file
ssh -o "BatchMode yes" $SSH_SUDO_WHITOUT_PASS@$SSH_HOST "sudo cat $FOLDER/crontab > /etc/crontab"
echo "crontab overwirte from $FOLDER/crontab"
fi
} || {
echo "Error - Folder not exists"
exit 1
}
}
답변1
두 파일 모두 원격 파일이므로 간단히 다음을 수행할 수 있습니다.
ssh ... "sudo cp $FOLDER/crontab /etc/crontab"
cat
...이것은 사용자에게만 상승된 권한이 있고 일반 사용자 쉘이 리디렉션을 수행하는 "sudo 리디렉션" 문제를 방지합니다 > /etc/crontab
.