Shell-Script
使用 sudo 遠端覆蓋 crontab 文件
我正在嘗試建構一個腳本,該腳本會自動在遠端伺服器上獲取文件並替換為 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
重定向。