Chci zjistit ze skriptu shellu (konkrétněji .zshrc), zda je řízen přes SSH. Zkoušel jsem proměnnou HOST, ale vždy je to název počítače, na kterém je spuštěn shell. Mohu získat přístup k názvu hostitele, ze kterého pochází relace SSH? Porovnání těchto dvou by můj problém vyřešilo.
Pokaždé, když se přihlásím, zobrazí se zpráva s časem posledního přihlášení a hostitelem:
Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1
Last login: Fri Mar 18 23:11:56 2011 from max
To znamená, že server má tyto informace.
Přijatá odpověď:
Zde jsou kritéria, která používám ve svém ~/.profile
:
- Pokud je jedna z proměnných
SSH_CLIENT
neboSSH_TTY
je definováno, je to relace ssh. - Pokud je název nadřazeného procesu přihlašovacího prostředí
sshd
, je to relace ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
SESSION_TYPE=remote/ssh
# many other tests omitted
else
case $(ps -o comm= -p $PPID) in
sshd|*/sshd) SESSION_TYPE=remote/ssh;;
esac
fi
(Proč byste to chtěli otestovat v konfiguraci shellu a ne při spuštění relace?)