我正在尝试构建一个脚本,自动获取远程服务器上的文件并替换为 crontab 文件,但权限被拒绝。
我的想法是为其创建一个 shell 函数:
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"
...这避免了“sudo 重定向”问题,其中只有cat
具有提升的权限,并且您的普通用户 shell 执行重定向> /etc/crontab
。