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