Se você já tiver uma lista de URLs, basta adicionar os dados POST a essa lista. Algo como:
www.example.com postdata1
www.foo.com
www.bar.com second_post_data
Em seguida, em vez de usar -i
, leia o arquivo em um loop bash e passe os dados para wget:
while read url post; do wget --post-data="$post" $url; done < list.txt
Para executá-los em paralelo para que vários arquivos sejam baixados ao mesmo tempo, use &
em vez de ;
. No entanto, é muito cuidadoso que isso inicie um processo wget
separado para cada URL.
while read url post; do wget --post-data="$post" $url & done < list.txt
Um truque que eu uso para lançar esse tipo de coisa é manter o controle de quantos estão atualmente em execução e só executar o próximo se o número estiver abaixo de um limite, 10 por exemplo:
while read url post; do
while [[ "$(pgrep -fc wget)" -gt 9 && $c -gt 10 ]]; do sleep 1; done;
((c++));
echo "Launching $url ($c)";
wget --post-data="$post" $url >/dev/null 2>&1 && echo "$c finsihed" &
done < list.txt
Isso lançará as 10 primeiras URLs e esperará que uma delas termine e lance a próxima.