Izvēlieties starpniekserveri katrā xargs uzdevumā
Veiciet nejaušo atlasi apakščaulā, lai katrs paralēlais curl uzdevums iegūtu starpniekserveri no saraksta.
Ievietojiet nejaušo atlasi čaulā, kas tiek palaista katram uzdevumam. Paplašinot komandas aizstāšanu ārējā čaulā, vērtība tiek izvēlēta pirms xargs sāk savu darbu.
Ar pārbaudītu proxies.txt, kurā katrā rindā ir viens starpniekservera URL, publiskos kandidātus var ņemt no bezmaksas starpniekserveru saraksta; formatējiet katru ierakstu ar protokolu, ko atbalsta curl:
printf '%s\0' 'https://a.example/one' 'https://b.example/two' |
xargs -0 -n 1 -P 4 sh -c '
proxy=$(shuf -n 1 proxies.txt) || exit 1
[ -n "$proxy" ] || exit 1
curl --fail --silent --show-error --max-time 30 \
--proxy "$proxy" --noproxy "" --output /dev/null "$1"
' _
-n 1 piešķir vienu URL katrai komandai, un -P 4 atļauj līdz četrām komandām vienlaikus. Ar nullēm atdalītā ievade saglabā URL kā vienu argumentu. Pasvītra aizņem sh $0 pozīciju, atstājot URL vietā $1.
Katra apakščaua shuf izpilda neatkarīgi. Nejaušā atlase var izvēlēties vienu un to pašu starpniekserveri vairāk nekā vienu reizi; tā nav cikliska plānošana un negarantē atšķirīgas izejas adreses.
Nepārprotami tukšais apiešanas saraksts neļauj mantotajam no_proxy iestatījumam apiet izvēlēto starpnieku. Piemērs atmet atbilžu pamattekstus; saglabājot vienlaicīgas lejupielādes, izmantojiet atsevišķus izvades ceļus.