Configurando variáveis de ambiente do proxy em um script de shell [duplicado]

0

Estou tentando definir um proxy em uma base rotativa; mas meus comandos export não estão funcionando. Estou usando o CentOS 7.

Voltei ao básico e testei um script bash realmente simples, que define e desconfigura as variáveis de ambiente e as testa. As variáveis de ambiente aparecem definidas corretamente, mas meu IP externo ainda está mostrando como meu IP local.

$1 é um endereço no formato link

#!/bin/bash

function set() {
    export http_proxy="$1/"    # not working
    export https_proxy="$1/"   # not working
    testExtIP
}

function unset() {
    unset http_proxy
    unset https_proxy
    testExtIP
}

function testExtIP() {
    externalHTTP=$(curl -s http://api.ipify.org) # an API that echos the external IP quickly
    externalHTTPS=$(curl -s https://api.ipify.org)
    echo "External HTTP: $externalHTTP; external HTTPS: $externalHTTPS" 
}

case "$1" in
    'set')
    set $2 # speed
    ;;
    'unset')
    unset $2
    ;;
    'test')
    testExtIP $2
    ;;
    *)
    echo "Usage: $0 $versum [set|unset|test]"
    ;;
esac

Eu gostaria que o script retornasse:

External HTTP: 119.27.177.169; external HTTPS: 119.27.177.169

Mas meu IP externo não está definido:

External HTTP: **SERVERIP**; external HTTPS: **SERVERIP**

que eu testei usando várias ferramentas. Por que o comando de exportação não está funcionando? Estou perdendo algo importante?

    
por Michael Riordan 19.01.2018 / 23:22

1 resposta

0

Você não pode fazer assim. Um script tem seu próprio conjunto de variáveis (ou ambiente, se quiser), que está disponível apenas para o script em si e desaparece assim que o script termina. Portanto, o shell que é o pai do script (porque você executa o script de dentro do shell) não sabe sobre o ambiente e define as variáveis do script.

    
por 19.01.2018 / 23:42