Solution 1 :
Vous pouvez utiliser la sortie de la commande "w" ou "who". Lorsque vous vous connectez via ssh, ils affichent votre adresse IP source.
Solution 2 :
Voici une excellente réponse que j'ai trouvée sur unix.stackexchange :
- Si une des variables
SSH_CLIENT
ouSSH_TTY
est défini, il s'agit d'une session ssh. - Le processus parent du shell de connexion peut être vérifié avec
ps -o comm= -p $PPID
. Si c'estsshd
, c'est une session 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
Solution 3 :
Vous pouvez ajouter SSH_*
à env_keep
en sudoers
afin que cela puisse être détecté lors du passage à l'autre utilisateur.
Solution 4 :
Si vous voulez savoir si votre shell bash est directement un processus enfant de sshd (pas n>1 couches de profondeur), vous pouvez
chat /proc/$PPID/statut | tête -1 | couper -f2
cela devrait vous donner sshd
ou quel que soit le nom du processus parent de votre shell actuel.
Solution 5 :
Je pense que vous voulez repenser la façon dont vous envisagez le problème. La question n'est pas "suis-je connecté via SSH, parce que je veux désactiver certaines commandes". C'est "suis-je connecté à la console, car alors j'activerai certaines commandes."