Ein Backtick-Befehl mit export ändert nur die Shell, die für genau diesen Befehl erzeugt wurde. Wenn die Shell endet, hat der übergeordnete Perl-Prozess weiterhin seine bisherige Umgebung.

Setzen Sie stattdessen den Umgebungs-Hash von Perl. local kann die Änderung innerhalb eines Blocks halten:

{
    local $ENV{http_proxy} = 'http://proxy.example:8080';
    local $ENV{https_proxy} = 'http://proxy.example:8080';

    my $status = system {
        '/usr/bin/curl'
    } '/usr/bin/curl', '--fail', '--max-time', '30',
      'https://downloads.example/data.csv';

    die "Downloader failed: $status" if $status != 0;
}

Das Kind erbt die lokalisierten Werte. Für einen öffentlichen HTTP-Download kann ein Endpunkt aus der HTTP-Proxy-Liste diese URL-Werte liefern. Wenn der Block endet, stellt Perl die vorherigen Einträge wieder her, einschließlich ihres vorherigen Fehlens. Das angezeigte system-Ergebnis ist der Prozessstatus von Perl, kein dekodierter HTTP-Antwortcode.

local ist dynamisch gültig: Anderer Perl-Code, der innerhalb dieses Blocks aufgerufen wird, sieht die temporäre Umgebung ebenfalls. Es ist kein privater Anmeldedatenspeicher pro Funktion.

Prüfen Sie geerbte Großbuchstaben- und Bypass-Variablen für den gewählten Client. Welche Eingaben verwendet werden, entscheidet der Downloader. Eine Proxy-Einstellung ändert außerdem nicht die Benutzeridentität des Prozesses und erfordert keine eigene Root-Shell, nur damit sie geerbt wird.

Ähnliche Artikel