
Beim Einloggen über SSH möchte ich während der Ausführung .bashrc
den Namen des Hosts wissen, der die Verbindung herstellt.
Ubuntu Server zeigt die Eingabeaufforderung an:
Last login: Fri Feb 14 11:34:55 2014 from somehost.local
... also sind diese Informationen irgendwo verfügbar.
Wie kann ich darauf zugreifen?
Antwort1
Wenn Sie Folgendes eingeben:
who
Sie sehen Informationen zu den angemeldeten Benutzern. Unter anderem können Sie sehen, von welchem Host sie angemeldet sind. Mein Laptop gibt beispielsweise derzeit Folgendes zurück:
who -u
darent tty6 2014-02-14 01:15 11:02 20339
darent tty7 2014-02-14 23:15 antic 31827 (:0)
darent pts/7 2014-02-14 23:14 00:46 30246 (helena.local)
darent pts/1 2014-02-14 23:16 . 1466 (:0)
darent pts/9 2014-02-14 23:19 00:25 302 (:0)
Wobei helena.local der Computer ist, von dem aus ich per SSH verbunden bin.
Antwort2
ssh
Legt die Umgebungsvariable so fest $SSH_CONNECTION
, dass sie die Client-IP-Adresse, die Client-Portnummer, die Server-IP-Adresse und die Server-Portnummer durch Leerzeichen getrennt enthält.
Sie können
echo ${SSH_CONNECTION%% *}
um die IP-Adresse des Clients zu erhalten. Um den DNS-Namen zu erhalten, verwenden Sie etwas wie host
oder dig -x
:
host ${SSH_CONNECTION%% *}
Antwort3
Last login: Fri Feb 14 11:34:55 2014 from somehost.local
In dieser Zeile wird der Host des vorherigen, nicht des aktuellen Logins angezeigt.
Derwho
-Methodefunktioniert für mich. Besser:who -m
Beachten Sie, dass die Variable SSH_CONNECTION
verloren geht, wenn Sie einen Unterprozess starten, zB durch den Aufruf von su
.