A véletlen kiválasztást abba a héjba tegye, amely minden feladathoz elindul. Ha a parancshelyettesítést a külső héjban fejti ki, az érték még azelőtt kiválasztódik, hogy az xargs elkezdené a munkáját.

Egy ellenőrzött proxies.txt fájllal, amelyben soronként egy proxy URL szerepel, a nyilvános jelöltek a ingyenes proxyk listájáról származhatnak; minden bejegyzést a curl által támogatott protokollal formázzon:

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"
  ' _

A -n 1 egy URL-t ad minden parancsnak, a -P 4 pedig egyszerre legfeljebb négy parancsot engedélyez. A nullákkal tagolt bemenet egyetlen argumentumként őrzi meg az URL-t. Az aláhúzás foglalja el a sh $0 pozícióját, így az URL a $1 helyen marad.

Minden gyermekhéj önállóan futtatja a shuf parancsot. A véletlen kiválasztás többször is ugyanazt a proxyt választhatja; ez nem körkörös ütemezés, és nem garantál különböző kilépési címeket.

A kifejezetten üres megkerülési lista megakadályozza, hogy egy örökölt no_proxy beállítás megkerülje a kiválasztott közvetítőt. A példa elveti a választörzseket; párhuzamos letöltések mentésekor használjon külön kimeneti útvonalakat.

Kapcsolódó cikkek