Shell-Script

使用 sudo 遠端覆蓋 crontab 文件

  • February 11, 2019

我正在嘗試建構一個腳本,該腳本會自動在遠端伺服器上獲取文件並替換為 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
 }
}

由於這兩個文件都是遠端文件,您可以簡單地:

 ssh ... "sudo cp $FOLDER/crontab /etc/crontab"

…這避免了“sudo 重定向”問題,其中只有cat具有提升的權限,而您的普通使用者 shell 會執行> /etc/crontab重定向。

引用自:https://unix.stackexchange.com/questions/499949