Soluzione 1:
Potresti usare l'output del comando "w" o "who". Quando ti connetti tramite ssh, mostreranno il tuo IP di origine.
Soluzione 2:
Ecco un'ottima risposta che ho trovato su unix.stackexchange:
- Se una delle variabili
SSH_CLIENT
oSSH_TTY
è definito, è una sessione ssh. - Il processo padre della shell di login può essere controllato con
ps -o comm= -p $PPID
. Se èsshd
, è una sessione ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
SESSION_TYPE=remote/ssh
else
case $(ps -o comm= -p $PPID) in
sshd|*/sshd) SESSION_TYPE=remote/ssh;;
esac
fi
Soluzione 3:
Potresti aggiungere SSH_*
a env_keep
in sudoers
in modo che questo possa essere rilevato mentre si passa all'altro utente.
Soluzione 4:
Se vuoi sapere se la tua bash shell è direttamente un processo figlio di sshd (non n>1 livelli di profondità) puoi farlo
cat /proc/$PPID/status | testa -1 | taglia -f2
dovrebbe darti sshd
o qualunque sia il nome del processo padre della tua shell corrente.
Soluzione 5:
Penso che tu voglia ripensare il modo in cui pensi al problema. La domanda non è "ho effettuato l'accesso tramite SSH, perché voglio disattivare determinati comandi". È "sono loggato alla console, perché poi abiliterò determinati comandi."