Kiekvienoje xargs užduotyje pasirinkite tarpinį serverį
Atlikite atsitiktinę atranką antriniame apvalkale, kad kiekviena lygiagreti curl užduotis gautų tarpinį serverį iš sąrašo.
Įdėkite atsitiktinę atranką į apvalkalą, paleidžiamą kiekvienai užduočiai. Išplėtus komandos pakaitalą išoriniame apvalkale, reikšmė parenkama dar prieš xargs pradedant darbą.
Turint patikrintą proxies.txt su vienu tarpinio serverio URL eilutėje, vieši kandidatai gali būti imami iš nemokamų tarpinių serverių sąrašo; kiekvieną įrašą formatuokite curl palaikomu protokolu:
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 duoda vieną URL kiekvienai komandai, o -P 4 leidžia vienu metu vykdyti iki keturių komandų. Nuliniais simboliais atskirta įvestis išsaugo URL kaip vieną argumentą. Pabraukimas užima sh $0 poziciją, o URL lieka $1.
Kiekvienas antrinis apvalkalas shuf vykdo savarankiškai. Atsitiktinė atranka gali pasirinkti tą patį tarpinį serverį daugiau nei kartą; tai nėra ciklinis planavimas ir negarantuoja skirtingų išėjimo adresų.
Aiškiai tuščias apėjimo sąrašas neleidžia paveldėtam no_proxy nustatymui apeiti pasirinkto tarpininko. Pavyzdys atmeta atsakymų turinį; išsaugodami lygiagrečius atsisiuntimus naudokite atskirus išvesties kelius.