
При входе через SSH во время выполнения мне хотелось бы узнать .bashrc
имя хоста, к которому осуществляется подключение.
Ubuntu Server отображает приглашение:
Last login: Fri Feb 14 11:34:55 2014 from somehost.local
...значит эта информация где-то доступна.
Как я могу получить к нему доступ?
решение1
Если вы введете:
who
Вы увидите информацию о вошедших пользователях. Среди прочего, вы можете увидеть хост, с которого они вошли. Например, прямо сейчас мой ноутбук возвращает это:
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)
Где helena.local — это компьютер, с которого я подключаюсь по ssh.
решение2
ssh
устанавливает переменную среды $SSH_CONNECTION
, содержащую IP-адрес клиента, номер порта клиента, IP-адрес сервера и номер порта сервера, разделенные пробелами.
Вы можете использовать
echo ${SSH_CONNECTION%% *}
чтобы получить IP-адрес клиента. Чтобы получить DNS-имя, используйте что-то вроде host
или dig -x
:
host ${SSH_CONNECTION%% *}
решение3
Last login: Fri Feb 14 11:34:55 2014 from somehost.local
В этой строке отображается хост предыдущего, а не текущего входа.
Thewho
-методМне подходит. Лучше:who -m
Обратите внимание, что переменная SSH_CONNECTION
теряется, если вы запускаете подпроцесс, например, вызывая su
.