誤シャットダウンを避ける方法

2024.4

私の複数のraspberry piを運用しているのですが、
その都度シャットダウンするものと常時稼働のものがあり、後者へのログイン中に、よく誤シャットダウンして困っていました。
そこで現在は、常時稼働のラズパイの .bashrc に次のような関数を書いて $ sudo shutdown -h を無効にしています。

function sudo () {
    if [ "$1" = "shutdown" ] && [ "$2" = "-h" ]; then
        echo "sorry: shutdown -h command is forbidden by .bashrc."
    else
        command sudo "$@";
    fi
}

もちろんこのままだと本当にシャットダウンしたいときにもできないので、本当にシャットダウンしたいときにはシャットダウン用のスクリプトを実行することにしています。

clear
echo "サーバXXXを20秒後にシャットダウンします。よろしいですか?"
sleep 10
echo "XXXを本当にシャットダウンしてよろしいですか?(あと10秒)"
sleep 5
for i in {5..1}; do
   echo "$i"; sleep 1
done
sudo shutdown -h now

カウントダウン中にCtrl+Cすればshutdownをキャンセルできます。
他にもやり方があるかもしれませんが、誤shutdownで困っている人の参考までに書いてみました。