Помощь в bash для нескольких потоков

У меня есть список IP-адресов, и мне нужно проверить их на открытые порты, используя nmap . Пока что мой сценарий выглядит так:

 #!/bin/bash filename="$1" port="$2" echo "STARTING NMAP" while IFS= read -r line do nmap --host-timeout 15s -n $line -p $2 -oN output.txt | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} >> total.txt done <"$filename" 

Он работает отлично, но он медленный, и я хочу проверить, например, 100 IP-адресов из файла одновременно, вместо того, чтобы запускать их один за другим.

  • Как передать несколько строк параметру без цикла for?
  • Почему некоторые порты сообщаются с помощью nmap, а не других?
  • Настроить masscan, чтобы оставить пользовательский агент в журналах сервера
  • как использовать только определенные адреса в подсети для traceroute?
  • Порт 443 переключается на фильтрацию после теста openssl
  • Выводить только IP-адреса онлайн-машин с nmap
  • nmap не отображает список открытых портов
  • Apt-Get не удалось найти пакет
  • 3 Solutions collect form web for “Помощь в bash для нескольких потоков”

    Вот один из способов:

     #!/bin/bash filename="$1" port="$2" echo "STARTING NMAP" ## Read the file in batches of 100 lines for((i=100;i<=$(wc -l < "$filename");i+=100)); do head -n "$i" "$filename" | tail -n 100 | while IFS= read -r line do ## Launch the command in the background nmap --host-timeout 15s -n $line -p $2 -oN output.txt | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} >> total.txt & done ## Wait for this batch to finish before moving to the next one ## so you don't spam your CPU wait done 

    Вы можете использовать опцию -iL для передачи файла в список IP-адресов назначения, которые могут быть разделены пробелами, вкладками или новыми строками и не нуждаются в цикле.

    Вы можете запускать команды в фоновом режиме:

     nmap ... >> total.txt & 

    Может быть полезно подождать внутри скрипта для завершения всех фоновых процессов:

     [...] done <"$filename" wait 
    Interesting Posts

    Ошибка Debian 6.0 и Xen PyGrub

    Как удалить строку, если строка является единственной вещью на линии

    Debian GNOME 2.30, рабочий стол больше не отвечает

    Как им удалось управлять компьютером Unix до мышей и скопировать и вставить?

    Как вы можете назначить один IP на пользователя?

    Tar – преобразование stdin без извлечения

    Почему история не перезаписывается, а добавляется, когда значение histappend отключено в Bash?

    установить MAC-адрес в файле «интерфейсы» без настройки других параметров сети

    Как контролировать попытки аутентификации в PAM?

    Как добавить одноразовые пакеты в конфигурацию декларативно?

    правильный способ установки пакетов с apt-get без запроса

    Как работают файлы $ HOME / .ssh и $ HOME / .ssh / authorized_keys, когда несколько пользователей имеют одинаковый UID?

    Как удалить записи GRUB2 в Fedora 16?

    Поворот в текстовом режиме (нет X) (поворот = поворот на 90 градусов)

    Отключить звуковое устройство ATI HDMI – Fedora с PulseAudio

    Linux и Unix - лучшая ОС в мире.