X-Git-Url: https://git.madduck.net/code/molly-guard.git/blobdiff_plain/b8333417c7987231f26948bfb1b8d0debffc3a00..99a389134d3257c43bf258007d5880a4885bdc77:/shutdown diff --git a/shutdown b/shutdown index 65fd374..8beaa50 100755 --- a/shutdown +++ b/shutdown @@ -15,10 +15,11 @@ CMD="${0##*/}" EXEC="/sbin/$CMD" case "$CMD" in - halt|reboot|shutdown) + halt|reboot|shutdown|poweroff) if [ ! -f $EXEC ]; then echo "E: $ME: not a regular file: $EXEC" >&2 exit 4 + fi if [ ! -x $EXEC ]; then echo "E: $ME: not an executable: $EXEC" >&2 exit 3 @@ -33,7 +34,14 @@ ARGS="$@" do_real_cmd() { - exec $EXEC "$ARGS" + case "$ARGS" in + (*--molly-guard-do-nothing*) + ARGS0="${ARGS%%--molly-guard-do-nothing*}" + ARGS1="${ARGS##*--molly-guard-do-nothing}" + echo "$ME: would run: $EXEC ${ARGS0# } ${ARGS1# }" + exit 0;; + *) eval exec $EXEC "$ARGS";; + esac } # require $SSH_CONNECTION to be set, indicates an SSH session @@ -42,16 +50,28 @@ do_real_cmd() test -t 0 || do_real_cmd # pass through help commands case "$CMD $ARGS" in - 'shutdown*-c'|'*-h') do_real_cmd;; + (shutdown\ *-c*) do_real_cmd;; + (shutdown\ *-h*) do_real_cmd;; + (*--help*) do_real_cmd;; *) :;; esac -echo -n "$ME: SSH session detected, type in hostname of the machine to $CMD: " -read HOSTNAME_USER - HOSTNAME="$(hostname)" -if [ "$HOSTNAME_USER" != "$HOSTNAME" ]; then +sigh() +{ echo "Good thing I asked; I won't $CMD $HOSTNAME ..." exit 2 -fi +} + +trap 'echo;sigh' 1 2 3 9 10 12 15 + +echo "$ME: SSH session detected!" +echo -n "Please type in hostname of the machine to $CMD: " +read HOSTNAME_USER || : + +[ "$HOSTNAME_USER" = "$HOSTNAME" ] || sigh + +trap - 1 2 3 9 10 12 15 + +do_real_cmd