GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erkennt man, ob die Shell von ssh aus gesteuert wird?

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 oder SSH_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?)


Linux
  1. So durchsuchen Sie das Web vom Terminal unter Linux

  2. Init-System mit der Shell erkennen?

  3. So führen Sie Python-Skripte von der Shell aus

  4. So ändern Sie die Standard-Shell in Linux

  5. adb:Finden Sie PID aus der Adb-Shell

Telnet vs. SSH:Wie unterscheidet sich SSH von Telnet?

Linux-Grundlagen:So erstellen und installieren Sie SSH-Schlüssel auf der Shell

So ändern Sie die Standard-Shell im Linux-System

So ändern Sie den SSH-Port in CentOS

Wie kann ich die aktuelle CPU-Auslastung aus der Shell ermitteln?

Wie erkennt man das Starten von Programmen unter Linux?