在bash脚本中获取远程主机名

Stu*_*Stu 5 bash hostname

抱歉,我对 Linux bash 命令的了解非常基础,我已经搜索了一段时间,但我不能 100% 确定我需要搜索什么。

我想知道是否有办法在 Linux bash 脚本中获取当前登录用户的远程主机名?我有一个脚本,每次用户运行它时都需要登录。我这样获取日期:

cdat=`/bin/date +%a' '%d' '%h' '%Y', '%H':'%M`;
Run Code Online (Sandbox Code Playgroud)

我现在需要添加用户远程主机(而不是他们登录时使用的用户名)。我也不是 100% 确定我在这里使用了正确的术语,只是为了澄清一下;我所说的“远程主机名”是指在我通过 ssh 登录的大多数服务器上打印在屏幕上的相同输出,例如:

Last login: Mon Jul 22 16:35:09 2013 from win7-i7-stuart.my.domain.com
Run Code Online (Sandbox Code Playgroud)

我正在寻找那win7-i7-stuart.my.domain.com一点。

slm*_*slm 2

最好使用该命令who am i,这样您就不会获得重复的信息,并且在仅使用普通的who.

$ who am i
sam      pts/6        2013-07-22 13:21 (192.168.1.110)
Run Code Online (Sandbox Code Playgroud)

幽默地说,你也可以使用这个:

$ who mom likes
sam      pts/6        2013-07-22 13:21 (192.168.1.110)
Run Code Online (Sandbox Code Playgroud)

您可以使用解析它,sed以便它只是他们连接的主机:

$ who am i | sed 's/.*(\(.*\))/\1/'
192.168.1.110
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下命令查看用户登录的完整历史记录last

$ last <username>
Run Code Online (Sandbox Code Playgroud)

例如:

$ last sam | less
sam      pts/6        192.168.1.110    Mon Jul 22 13:21   still logged in   
sam      pts/6        192.168.1.110    Mon Jul 22 11:02 - 11:02  (00:00)    
sam      pts/5        192.168.1.110    Thu Jul 18 14:41 - 16:41  (01:59)    
sam      pts/5        192.168.1.110    Wed Jul 17 15:56 - 16:28  (00:31)    
sam      pts/5        192.168.1.110    Wed Jul 17 15:56 - 15:56  (00:00)    
sam      pts/4        192.168.1.110    Wed Jul 17 14:28 - 14:29  (00:00)    
sam      pts/7        192.168.1.110    Tue Jul 16 16:27 - 16:50  (00:23)
Run Code Online (Sandbox Code Playgroud)

参考