Выполнение команд последовательно для нескольких папок

AFAIK по умолчанию Nmap не имеет ничего общего с вашими сетевыми интерфейсами, если вы этого не хотите. Я рекомендую вам прочитать книгу Гордона (Федора) Лайона СКАНИРОВАНИЕ СЕТИ NMAP .

Например, если вы хотите использовать другой сетевой интерфейс, вы должны передать параметр -e , за которым следует требуемое имя интерфейса, например -e wlan0 . Так что я не думаю, что это может быть вызвано Nmap.

То, что вы использовали, включает параметры -sT и -Pn :

-sT (сканирование TCP-соединения)

Как мы можем видеть на обеих страницах руководства Nmap и в книге, которую я только что порекомендовал, сканирование TCP-соединения является типом сканирования TCP по умолчанию, когда сканирование SYN не является вариантом. Это тот случай, когда у пользователя нет прав на использование сырых пакетов или он сканирует сети IPv6. Вместо того, чтобы писать необработанные пакеты, как это делают большинство других типов сканирования, Nmap просит базовую операционную систему установить соединение с целевой машиной и портом, выполняя системный вызов connect .

Это тот же системный вызов высокого уровня, который используют веб-браузеры, клиенты P2P и большинство других сетевых приложений для установления соединения. Вместо того, чтобы читать необработанные ответы пакетов по сети, Nmap использует этот API для получения информации о состоянии при каждой попытке подключения.

Обратите внимание, что этот тип сканирования и сканирование отказов FTP (-b) являются единственными типами сканирования, доступными непривилегированным пользователям .

Обратите внимание, что это не скрытое сканирование.

-Pn (сканирование без Ping)

В предыдущих версиях Nmap -Pn было -P0 и -PN.

Эта опция отключает ping-сканирование и пропускает этап обнаружения Nmap.

Существует множество причин для отключения эхо-запроса, например, оценка вторженной уязвимости, и его можно использовать для обхода, когда хост защищен брандмауэром.

ЗАКЛЮЧЕНИЕ : Это не должно было быть вызвано Nmap, по крайней мере, не этой командой, которую вы использовали.

Примечание. Кстати, PCI (Peripheral Component Interconnect) - это отраслевая спецификация для подключения аппаратных устройств к центральному процессору компьютера. Итак, как мы можем догадаться, сетевые адаптеры Ethernet и Wi-Fi для настольных компьютеров и ноутбуков обычно используют PCI.

3
09.07.2016, 16:34
2 ответа

Символ '&' помещает ваши подпрограммы в фоновый режим, поэтому все они выполняются одновременно.

Что вы, вероятно, захотите сделать, так это инвертировать ваши циклы:

for script in script1 script2 script3 …; do
    for folder in $(cat $path/names.txt); do
        ( cd $path/$folder; $script; ) &
    done
    wait
done
0
27.01.2020, 21:22

Сначала создайте сценарий-обертку, который переходит в каталог, указанный в первом (и единственном) аргументе командной строки, выполняет все необходимые настройки/инициализацию переменных/etc, а затем последовательно запускает ваши 10 сценариев с любыми необходимыми им аргументами.

Например, если каждый сценарий обрабатывает все файлы .jpg, .png и .gif в каталоге:

#! /bin/bash
# example-wrapper.sh

cd "$1"

script1 *.{jpg,png,gif}
script2 *.{jpg,png,gif}
script3 *.{jpg,png,gif}
script4 *.{jpg,png,gif}
script5 *.{jpg,png,gif}
script6 *.{jpg,png,gif}
script7 *.{jpg,png,gif}
script8 *.{jpg,png,gif}
script9 *.{jpg,png,gif}
script10 *.{jpg,png,gif}

Далее, используйте find для передачи списка каталогов в parallel.

find /path/to/parent/ -mindepth 1 -type -d -print0 | 
  parallel -0 -n 1 ./example-wrapper.sh

(опция -mindepth 1 в find исключает каталог верхнего уровня, т.е. сам родительский каталог)

По умолчанию parallel будет запускать один экземпляр ("задание") ./example-wrapper.sh для каждого имеющегося у вас ядра CPU. Каждый экземпляр получит ОДНО (-n 1) имя каталога. Как только одно задание завершается, запускается другое (если остались еще какие-либо задания для выполнения).

Это позволяет максимально использовать доступную мощность процессора, не позволяя заданиям конкурировать друг с другом за процессорное время.

Вы можете использовать опцию parallel в -j для настройки количества заданий, выполняемых одновременно. Для задач, требовательных к процессору, вероятно, подойдет значение по умолчанию - одно задание на ядро системы.

Если ваши задания не очень требовательны к процессору, но более привязаны к вводу-выводу, вам, возможно, потребуется запустить 2-3 задания на каждое ядро (в зависимости от размера входных файлов, скорости хранения данных и типа устройств хранения - например, SSD не страдают от задержки поиска, поэтому не будут замедлены несколькими процессами, ищущими данные по всему диску. Жесткие диски страдают от времени поиска и будут замедляться от того, что их заставляют беспорядочно искать данные по всему диску - дисковая буферизация/кэширование в Linux поможет, но не устранит проблему).

Если вы хотите выполнять другую работу (например, обычное использование рабочего стола) во время выполнения этих заданий, используйте -j, чтобы указать parallel использовать на одно или два ядра меньше, чем у вашей системы (например, -j 6 на 8-ядерной системе).

ПРИМЕЧАНИЕ: Настройка параллельных процессов - это тонкое искусство, и для получения наилучших результатов может потребоваться несколько экспериментов.

В любом случае, из man parallel:

--jobs N, -j N, --max-procs N, -P N

Количество рабочих мест. Параллельно выполняется до N заданий. 0 означает как можно больше. По умолчанию - 100%, при котором будет выполняться одно задание на ядро процессора.

Если --semaphore установлен, то по умолчанию это 1, что создает мьютекс.

Это действительно базовое и примитивное использование parallel. Он может делать гораздо больше. Подробности смотрите в man-странице.

BTW, xargs также имеет опцию -P для параллельного выполнения заданий. Для простого использования, подобного этому, не имеет особого значения, используете ли вы xargs -P или parallel. Но если ваши требования сложнее, используйте parallel.

parallel должен быть упакован для большинства дистрибутивов linux, в противном случае он доступен по адресу https://www.gnu.org/software/parallel/

3
27.01.2020, 21:22

Теги

Похожие вопросы