X-Git-Url: https://git.madduck.net/code/molly-guard.git/blobdiff_plain/af2915093382dbef955f4ef91a73d474893f9f6e..f7542967fa23bca04d39e27318f905ab551b1d9c:/shutdown diff --git a/shutdown b/shutdown index cb567c2..0135f1a 100755 --- a/shutdown +++ b/shutdown @@ -15,7 +15,7 @@ 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 @@ -38,20 +38,25 @@ do_real_cmd() (*--molly-guard-do-nothing*) ARGS0="${ARGS%%--molly-guard-do-nothing*}" ARGS1="${ARGS##*--molly-guard-do-nothing}" - echo "$ME: would run: $EXEC $ARGS0 $ARGS1" + echo "$ME: would run: $EXEC ${ARGS0# } ${ARGS1# }" exit 0;; - *) exec $EXEC "$ARGS";; + *) eval exec $EXEC "$ARGS";; esac } -# require $SSH_CONNECTION to be set, indicates an SSH session -[ -n "${SSH_CONNECTION:-}" ] || do_real_cmd # require an interactive terminal connected to stdin test -t 0 || do_real_cmd + +# only run if we are being called over SSH, that is if the current terminal +# was created by sshd. +PTS=$(readlink /proc/$$/fd/0) +pgrep -f "^sshd.+${PTS#/dev/}[[:space:]]*$" >/dev/null || do_real_cmd + # pass through help commands case "$CMD $ARGS" in (shutdown\ *-c*) do_real_cmd;; - (*-h*) do_real_cmd;; + (shutdown\ *-h*) do_real_cmd;; + (*--help*) do_real_cmd;; *) :;; esac