sudoを使用してcrontabファイルをリモートで上書きする

sudoを使用してcrontabファイルをリモートで上書きする

リモートサーバー上のファイルを自動的にインポートして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

関連情報