Итак, я использую netstat -lt
для открытия открытых портов. Однако меня не интересуют определенные значения (например, SSH или 22), поэтому я хочу, чтобы их можно было исключить. Я также хочу получить их как массив в bash. Пока у меня есть netstat -lt | sed -r 's/tcp[^:]+://g' | cut -d' ' -f1
, но они не массив, и я ничего не исключаю.Получите открытые порты как массив
ответ
Добавить ($())
вокруг заявления:
port=($(netstat -ltn | sed -rne '/^tcp/{/:(22|25)\>/d;s/.*:([0-9]+)\>.*/\1/p}'))
Фильтрация портов 22 и 25.
a=(`netstat -ltn --inet | sed -r -e '1,2d''s/tcp[^:]+://g' | cut -d' ' -f1 | sed -e '1,2d' | grep -v "22\|33\|25"`)
второй СЕПГ команда удаляет заголовки, если ваша версия NETSTAT отпечатков таких. У меня есть «Активный» и «Прото» в качестве первых двух строк. Используйте grep для фильтрации нежелательных портов. добавьте -n в netstat, чтобы видеть номера портов вместо имен. --inet - заставить ipv4, иначе вы можете увидеть IPv6, который может смутить ваш скрипт.
btw не уверен, что вам нужен массив. обычно массивы нужны только в том случае, если вы собираетесь работать над поднабором значений, которые у вас есть. Если вы работаете со всеми значениями, есть более простые конструкции, но не уверен, что вы собираетесь делать.
С уважением.
обновление: вы можете использовать одну команду с патч в две операции вместо двух отдельных вызовов:
sed -r -e '1,2d' -e 's/tcp[^:]+://g'
Попробуйте использовать ss
команду, которая заменяет netstat
.
ss -atu | awk '{print $5}' | awk -F: '{print $NF}'
Команда ss
дает все TCP и UDP порты на локальной машине (только розетки, которые имеют порты). Первый awk извлекает столбец, содержащий локальный адрес и номер порта. Второй awk
занимает только последнее поле после двоеточия; это необходимо, если у вас есть сокеты IPv6 на вашем компьютере, чей IP-адрес также будет содержать двоеточия.
Как только вы это сделаете, вы можете вывести grep
из портов, которые вам не нужны. Также см. Документацию, указанную на странице руководства пользователя ss
, для получения информации об фильтрах, которая может позволить вам отфильтровать нежелательные сокеты с вывода ss
.
Я ожидал, что смогу свести две команды 'awk' к одной простой команде, но самое короткое, что я могу придумать, это:' ss -atu | awk '{old = FS; FS = ":"; $ 0 = $ 5; print $ NF; FS = old} '. – Thor
- 1. Открытые порты IBM Containers
- 2. открытые порты, но отключенные службы
- 3. Открытые порты экземпляров Amazon EC2
- 4. Открытые порты TCP на Raspbian
- 5. открытые порты FW для раскалывания
- 6. Как искать открытые порты в сети?
- 7. Как проверить открытые порты с помощью сокетов
- 8. Как проверить открытые порты с помощью powershell?
- 9. Как получить все открытые порты TCP UDP?
- 10. Как перечислить открытые порты в iOS?
- 11. Как проверить открытые порты на wifi-маршрутизаторе
- 12. Не удается найти открытые порты python
- 13. Шодан. Получить все открытые порты для сети
- 14. докер: показать открытые порты из связанного контейнера
- 15. API-интерфейс Softlayer получить открытые порты
- 16. Сканировать открытые порты сети в android
- 17. Максимальные открытые порты для приложения C#
- 18. nmap не показывает все открытые порты
- 19. Открытые порты для подключения сокетов. Это безопасно?
- 20. Как получить открытые порты удаленного сервера в PHP?
- 21. Как добавить открытые порты к уже функциональным iptables?
- 22. Как найти открытые порты на goDaddy Выделенный сервер?
- 23. Linux открытые порты вручную и действительные причины для этого
- 24. Соединение отказано в контейнерах Докера, сообщающихся через открытые порты
- 25. Открытые порты для TCP/UDP в брандмауэре Windows с Powershell
- 26. VS2013 Удаленная отладка - брандмауэр, предотвращающий подключение, несмотря на открытые порты
- 27. Открытые порты для Cassandra в среде разработки Google Cloud Comput
- 28. Докер: открытые порты не могут быть доступны в другом контейнере
- 29. Почему этот код сканера порта иногда пропускает открытые порты?
- 30. Открытые порты под Fedora Core 8 (для сервера VMWare)
Не работает? Я сделал «echo $ port» в качестве следующей строки, и все, что было напечатано, было «Активно». Кроме того, это не позволяет исключить определенные значения. –
'echo $ {port [@]}' Это массив, как и требовалось – fork0
Но это отвратительно ... Интересно, может ли программа sed быть улучшена ... – fork0