Ich möchte von einem Shell-Skript (genauer gesagt .zshrc) erkennen, ob es über SSH gesteuert wird. Ich habe die HOST-Variable ausprobiert, aber es ist immer der Name des Computers, auf dem die Shell ausgeführt wird. Kann ich auf den Hostnamen zugreifen, von dem die SSH-Sitzung kommt? Ein Vergleich der beiden würde mein Problem lösen.
Jedes Mal, wenn ich mich einlogge, erscheint eine Meldung mit der letzten Anmeldezeit und dem Host:
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
Das bedeutet, dass der Server über diese Informationen verfügt.
Akzeptierte Antwort:
Hier sind die Kriterien, die ich in meinem ~/.profile
verwende :
- Wenn eine der Variablen
SSH_CLIENT
oderSSH_TTY
definiert ist, handelt es sich um eine SSH-Sitzung. - Wenn der übergeordnete Prozessname der Login-Shell
sshd
ist , es ist eine ssh-Sitzung.
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
(Warum sollten Sie dies in Ihrer Shell-Konfiguration und nicht beim Sitzungsstart testen?)