Команды не найдены: netstat, nmap в CentOS 7

66

Я использую следующий CentOS:

$ cat /etc/centos-release 
CentOS Linux release 7.0.1406 (Core) 

Команды nmap, netstatи lsofне будут найдены на 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

Что я должен сделать, чтобы заставить их работать?

calmatery
источник

Ответы:

61

Пакет net-toolsбыл объявлен устаревшим в CentOS7 в пользу iproute2пакета. Вы можете установить его вручную или проверить этот блог для замены команды:

РЕДАКТИРОВАТЬ

Вот URL-адрес Bugzilla Red Hat для RHEL7, netstatболее подробно описывающий устаревание : https://bugzilla.redhat.com/show_bug.cgi?id=1119297

выдержка

Как указывалось ранее, сетевые инструменты устарели, поэтому их не следует использовать без необходимости. Поведение в RHEL 7 такое же, как в Fedora - net-tools отсутствует при минимальной установке, но находится в @base (~ = @standard в Fedora), который устанавливается во всех неминимальных конфигурациях.

Есть и другие заявки, связанные с этим, такие как идентификаторы 682308 и 687920. Обратите внимание, что они назначены проекту Fedora и довольно старые.

Дэн Кедер
источник
3
lsof не указан в вашей ссылке замен
туман
Было бы намного полезнее, если бы вы поставили подстановку lsofпрямо в своем ответе
ericn
3
Я не думаю, что lsofэто устарело. Он просто не установлен по умолчанию. Вы можете получить это с yum install lsof.
Дэн Кедер
32

просто сделать:

yum install net-tools
Алекс
источник
10
Мне потребовалось всего несколько минут, чтобы определить, что netstat -plntбыло заменено с ss -plntпомощью этой ссылки из ответа @ DanKeder выше. Я думаю, что мы должны сначала попытаться заставить рекомендованные решения дистрибутива работать вместо того, чтобы вернуться к устаревшим подходам.
CodeMed
12

Всякий раз, когда вы не можете найти исполняемые файлы в дистрибутиве Red Hat и знаете их имена, вам следует выполнить одно из следующих двух действий.

Используйте repoquery

Вы можете выполнять поиск в репозиториях YUM, доступных для вашей системы, с помощью команды repoquery. Если он не установлен, тогда сделайте yum install yum-utils.

$ repoquery -qf */nmap
nmap-2:6.40-4.el7.x86_64

Отсюда вы можете увидеть, какие пакеты имеют исполняемый файл с этими именами. Вот они все сразу.

$ 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

Теперь просто сделайте sudo yum install lsofили sudo 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

При таком подходе вам нужно будет немного покопаться, чтобы убедиться, что результирующие пакеты содержат искомый исполняемый файл. Я обычно заглядываю в список файлов, чтобы найти то, что я хочу, но для этого вам придется использовать 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

Поэтому использование моего первого подхода избавит вас от лишних шагов.

Устаревание Netstat

По-видимому, в CentOS 7 netstat, который является частью пакета net-tools, был официально объявлен устаревшим, поэтому вы должны использовать ss(часть пакета iproute2) в дальнейшем.

SLM
источник
1
+1 для repoqueryи yum searchкоманд.
fduff
4

Upvoted ответ slm, просто облегчая поиск информации, которую я использовал. Я хотел сделать:

netstat -nlp | grep httpd

Вместо этого на CentOS 7 я просто сделал:

ss -nlp | grep httpd

Что работает, даже не пришлось устанавливать его на CentOS 7 минимально.

Сделайте "man ss" для деталей использования.

Nagev
источник
2

Кажется, у вас просто не установлены эти инструменты. На CentOS вы сможете легко их установить yum. Попробуй это:

$ yum install nmap netstat
KidElephant
источник
1
На самом деле, это выглядит как довольно правильный ответ. Но, к сведению, это не займет много времени или работы, чтобы получить 50 повторений; если вы действительно чувствуете, что что-то должно быть опубликовано в качестве комментария, просто подождите, пока вы действительно не сможете опубликовать это как одно. (это не займет много времени)
HalosGhost
9
Также обратите внимание, netstatбыл объявлен устаревшим в пользу ss. Сомневаюсь, что это исчезнет в ближайшее время, но только к вашему сведению. Могу поспорить, что ssэто уже установлено.
Патрик
@HalosGhost: Это может занять значительно больше времени, и вам придется также задать или ответить на некоторые вопросы.
Гвидо ван Стин
1
OP указала CentOS 7. netstat не является допустимым пакетом в этом выпуске.
Дэвид Ньюкомб