Plaats de willekeurige keuze in de shell die voor elke taak wordt gestart. Het uitbreiden van een opdrachtvervanging in de buitenste shell kiest de waarde voordat xargs begint te werken.

Met een gevalideerd proxies.txt met één proxy-URL per regel kunnen openbare kandidaten uit de gratis proxylijst komen; formatteer elke regel met een protocol dat curl ondersteunt:

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 geeft elke opdracht één URL, en -P 4 staat maximaal vier opdrachten tegelijk toe. De met nullen gescheiden invoer bewaart de URL als één argument. Het laag streepje neemt de $0-positie van sh in en laat de URL in $1.

Elke kind-shell voert shuf zelfstandig uit. De willekeurige keuze kan dezelfde proxy meer dan eens kiezen; het is geen rondgangsplanning en geen garantie op verschillende uitgangsadressen.

De expliciet lege omzeilingslijst voorkomt dat een geërfde no_proxy-instelling de gekozen tussenpartij omzeilt. Het voorbeeld gooit antwoordlichamen weg; gebruik aparte uitvoerpaden bij het opslaan van gelijktijdige downloads.

Relatearre artikelen