未找到命令:CentOS 7 上的 netstat、nmap

cal*_*ery 67 centos package-management

我正在使用以下 CentOS:

$ cat /etc/centos-release 
CentOS Linux release 7.0.1406 (Core) 
Run Code Online (Sandbox Code Playgroud)

命令nmap,netstatlsof在 CentOS7 上找不到。为什么?

$ type -a nmap
bash: type: nmap: not found

$ type -a netstat
bash: type: netstat: not found

$ type -a lsof   
bash: type: lsof: not found
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使它们工作?

Dan*_*der 65

net-toolsCentOS7 中不推荐使用该软件包以支持该iproute2套件。您可以手动安装它或查看此博客文章以获取替换命令:

编辑

以下是 Red Hat 的针对 RHEL7 的 Bugzilla 的 URL netstat,其中更详细地介绍了弃用:https : //bugzilla.redhat.com/show_bug.cgi?id=1119297

摘抄

如前所述,网络工具已被弃用,因此除非必要,否则不应使用。RHEL 7 中的行为与 Fedora 中的相同 - 最小安装中缺少 net-tools,但在 @base(Fedora 中的 ~= @standard)中,它安装在所有非最小配置中。

还有其他处理此问题的票证,例如 ID 682308 和 687920。请注意,它们被分配给 Fedora 项目并且已经很旧了。

  • lsof 未列在您的替换链接中 (3认同)
  • 我不认为 `lsof` 已被弃用。它只是默认未安装。你可以通过 `yum install lsof` 获得它。 (3认同)

小智 35

做就是了:

yum install net-tools
Run Code Online (Sandbox Code Playgroud)

  • 我只花了几分钟就使用 [此链接](http://dougvitale.wordpress.com/2011/12/21/deprecated-linux- network-commands-and-their-replacements/) 来自上面@DanKeder 的回答。我认为我们应该首先尝试使发行版推荐的解决方案起作用,而不是恢复到已弃用的方法。 (13认同)

slm*_*slm 12

每当您在基于 Red Hat 的发行版上找不到可执行文件并且知道它们的名称时,您应该执行以下 2 件事中的 1 件事。

使用 repoquery

您可以使用命令搜索系统可用的 YUM 存储库repoquery。如果未安装,请执行yum install yum-utils.

$ repoquery -qf */nmap
nmap-2:6.40-4.el7.x86_64
Run Code Online (Sandbox Code Playgroud)

从这里您可以看到哪些包具有具有这些名称的可执行文件。这里是所有这些。

$ repoquery -qf */netstat */lsof */nmap
net-tools-0:2.0-0.17.20131004git.el7.x86_64
ctdb-tests-0:2.5.1-2.el7.x86_64
lsof-0:4.87-4.el7.x86_64
nmap-2:6.40-4.el7.x86_64
ctdb-tests-0:2.5.1-2.el7.x86_64
Run Code Online (Sandbox Code Playgroud)

现在只需执行sudo yum install lsofsudo yum install nmap安装这些缺少的包。

使用 yum 搜索

您也可以使用 进行类似的搜索yum search <executable>

$ yum search netstat     
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.advancedhosters.com
 * extras: mirror.cisp.com
 * updates: centos-mirror.jchost.net
================================================================== Matched: netstat ==================================================================
dstat.noarch : Versatile resource statistics tool
net-snmp.x86_64 : A collection of SNMP protocol tools and libraries
net-tools.x86_64 : Basic networking tools
Run Code Online (Sandbox Code Playgroud)

使用这种方法,您需要进行一些挖掘以确认生成的包包含您正在寻找的可执行文件。我通常会查看我想要的文件,但为此您必须使用repoquery.

$ repoquery -ql net-tools.x86_64  | grep netstat
/bin/netstat
/usr/share/man/de/man8/netstat.8.gz
/usr/share/man/fr/man8/netstat.8.gz
/usr/share/man/man8/netstat.8.gz
/usr/share/man/pt/man8/netstat.8.gz
Run Code Online (Sandbox Code Playgroud)

因此,使用我的第一种方法可以为您节省额外的步骤。

netstat 的弃用

显然,在 CentOS 7 中netstat,该软件包的一部分net-tools已被正式弃用,因此您应该继续使用ss(iproute2 软件包的一部分)。


Nag*_*gev 5

支持slm 的答案,只是为了更容易找到我使用的信息。我想做:

netstat -nlp | grep httpd
Run Code Online (Sandbox Code Playgroud)

相反,在CentOS 7上我只是这样做:

ss -nlp | grep httpd
Run Code Online (Sandbox Code Playgroud)

哪个有效,甚至不需要在CentOS 7 mini上安装它。

了解man ss使用详情。


小智 2

看来您根本没有安装这些工具。在 CentOS 上,您应该能够使用yum. 尝试这个:

$ yum install nmap netstat
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,“netstat”已被弃用,取而代之的是“ss”。怀疑它很快就会消失,但仅供参考。我敢打赌 `ss` 已经安装了。 (9认同)