我不是系统工程师或网络专家(我更像是软件开发人员),我有以下问题需要解决。
我在 Oracle Linux 机器上工作(基本上它应该是基于 RedHat 的)。
我必须检查 SSH 在此 VM 上侦听的网络实例。我使用此链接作为参考:https ://access.redhat.com/solutions/260463
它显示了如何使用此命令(这是以前的网站示例):
$ grep sshd netstat
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 12412 3522/sshd off (0.00/0/0)
问题是,如果我尝试在我的机器上复制相同的命令,我会收到此错误消息:
[root@zabbix-db ~]# grep sshd netstat
grep: netstat: No such file or directory
为什么?怎么了?我错过了什么?我如何正确执行此检查?这个错误的确切含义是什么(它说的是一个不存在的文件,但据我所知,我是在 netstat 输出而不是在文件上搜索)
不,您实际上是在 grep 一个名为
netstat
.要实际运行“netstat”作为命令,将其输出提供给 grep,您需要使用:
请注意,netstat 的默认输出实际上根本不会显示侦听套接字——您需要指定
-l
将它们包含在输出中。此外,它默认不会提及程序名称;该列由选项添加-p
。这同样适用于ss
,一些 Linux 发行版现在作为 netstat 的更现代的替代品发布。¹因此您可能想要-ltpn
:…只显示监听的 TCP 套接字及其程序名称。
¹ netstat 没有什么特别的问题,但它作为“net-tools”包的一部分出现,该包本身非常无人维护,而且它的其他工具(如 ifconfig)存在严重问题。
grep 命令的一般语法是:
所以 grep 没有找到名为“netstat”的文件——这并不奇怪,因为它是一个命令。
有几种方法可以实现您想要的;例如,您可以运行带有一些命令说明的netstat并通过 grep 发送输出以仅返回“sshd”的匹配项:
在我的(Debian)服务器上,这给出了: