当通过 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
此行显示的是上次登录的主机,而不是当前登录的主机。
这who
-方法对我有用。更好的是:who -m
SSH_CONNECTION
请注意,如果启动子进程(例如通过调用),变量将会丢失su
。