Как сохранить выходные данные для каждого экземпляра xargs отдельно - PullRequest
0 голосов
/ 06 января 2020

cat domains.txt | xargs -P10 -I % ffuf -u %/FUZZ -w wordlist.txt -o output.json

Ffuf используется для подбора файлов и каталогов, в то время как domains.txt содержит допустимые URL-адреса HTTP и HTTPS, такие как http://example.com, http://example2.com , Я использовал xargs, чтобы ускорить процесс, запустив 10 параллельных экземпляров. Но проблема здесь в том, что я не могу сохранить выходные данные для каждого экземпляра отдельно и вывод. json переопределяется каждым работающим экземпляром. Можем ли мы сделать что-нибудь уникальное для output.json, чтобы все данные сохранялись отдельно. Вместо этого я попробовал ffuf/$(date '+%s').json, но это тоже не сработало.

Ответы [ 2 ]

3 голосов
/ 06 января 2020

Конечно. Просто назовите свой выходной файл, используя домен. Например:

xargs -P10 -I % ffuf -u %/FUZZ -w wordlist.txt -o output-%.json < domains.txt

(я пропустил cat, потому что это было ненужно.)


Я пропустил тот факт, что ваш файл domains.txt на самом деле представляет собой список URL, а не список доменных имен. Я думаю, что самое простое решение - просто упростить domains.txt до доменных имен, но вы также можете попробовать что-то вроде:

xargs -P10 -I % sh -c 'domain="%"; ffuf -u %/FUZZ -w wordlist.txt -o output-${domain##*/}.json' < domains.txt
0 голосов
/ 06 января 2020
cat domains.txt | xargs -P10 -I % sh -c "ping % > output.json.%"

Вот так и ваш "%" может быть частью имени файла. (Я изменил вашу команду на ping для моего тестирования)

Так что может быть что-то вроде этого:

cat domains.txt | xargs -P10 -I % sh -c "ffuf -u %/FUZZ -w wordlist.txt -o output.json.%

"

Я бы заменил вашу команду ffuf следующим скриптом и вызвать его из команды xargs, которая просто удаляет недопустимые символы имени файла и заменяет их точкой, а затем запускает команду:

#!/usr/bin/bash

URL=$1
FILE="`echo $URL |  sed 's/:\/\//\./g'`"
ffuf -u ${URL}/FUZZ -w wordlist.txt -o output-${FILE}.json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...