我who
在一个共享的 NetBSD 机器上运行了这个命令,然后这个奇怪的用户 IP 出现了:
<redacted> pts/33 May 13 02:13 (XXX.XXX.XXX.XXX)
<redacted> pts/35 May 12 20:59 (202-172-110-147-)
<redacted> pts/36 May 6 20:36 (XXX.XXX.XXX.XXX)
我从来没有见过这样的IP。显然,ping 202-172-110-147-
会抱怨“无法解决...(未知主机)”。
7年前发布了一个类似的问题,它认为这是一种表示IP范围的非标准方式,但看到-
地址末尾有一个,它似乎不是一个类似的东西。
编辑:
我尝试使用反向 DNS nslookup 202-172-110-147-
,出现“** server can't find 202-172-110-147-: NXDOMAIN”错误
做w <user>
回报:
9:49AM up 89 days, 7:46, 1 user, load averages: 0.23, 0.18, 0.17
USER TTY FROM LOGIN@ IDLE WHAT
<redacted> pts/35 202-172-110-147- Tue08PM 4:13
编辑 2:这是在 NetBSD 上,而不是我一开始提到的 Linux(我以为盒子是 Linux):
$ uname -rsv
NetBSD 8.1 NetBSD 8.1 (GENERIC) #0: Fri May 31 08:43:59 UTC 2019 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC
编辑 3:@NStorm 更新后,我跑到w -n
将网络地址显示为数字。我仍然看到相同的结果
$ w -n <user>
9:57AM up 89 days, 7:54, 1 user, load averages: 0.12, 0.12, 0.14
USER TTY FROM LOGIN@ IDLE WHAT
<redacted> pts/35 202-172-110-147- Tue08PM 4:22
这只是从 IP 解析为该名称的 DNS RR(反向记录)。
由于记录是独立的,因此无法将已解析的 RR 真正映射回原始 IP。此外,RR 可以包含不存在的域名。因此,您不能依赖 RR 来获取有关已登录用户 IP 的信息。
要在没有 DNS 解析的情况下检查真实 IP,您可以使用
last -a -i
命令,该命令不仅显示当前登录的用户,还显示所有最近的登录。如果你真的只需要显示当前登录的用户,你可以简单地使用 grep 过滤最后的输出,如下所示:
last -ai | grep "still logged in"
或者
w -fi
,如果您有现代发行版,您可以按照下面的 Janne Pikkarainen 评论简单地使用。我刚刚意识到它确实是不受支持的发行版,它缺乏对这个工具的 -i 键的支持,比如 CentOS 5。请记住 - 如果你的发行版抱怨w -fi
,你总是可以使用last
上面提到的命令。编辑:作为以下操作系统(NetBSD 8.1)上的 OP 更新信息,这是根据NetBSD 手册页在 NetBSD 上获取 IP 而不是 DNS 记录的方法:
w -n
或者
last -n -f /var/run/utmptx
:根据 NetBSD 联机帮助页,如果用户当前已登录
/var/run/utmptx
是唯一将当前登录用户的真实 IP 记录为struct sockaddr_storage ut_ss
字段的地方。如果您无权访问该文件和/或当前网络连接(netstat
例如,您很可能也无权访问),您无法确定。最好的方法是猜测。似乎该
202-172-110-147-
记录已从 FQDN 中截断。但是我们可以尝试猜测它属于202.172.110.147
尝试挖掘RR的IP。和宾果游戏:好像是这个。完整的主机名是
202-172-110-147-cpe.spintel.net.au
刚刚截断的who
和其他工具输出。如果您有权访问,则
/var/log/wtmpx
可以从那里获取该 IP,但只有在该用户注销后。