Definindo o proxy no apt.conf usando o Bash Script

0

Eu escrevi o seguinte script bash para escrever o proxy no arquivo apt.conf, e escondê-lo de ser ecoado para o terminal.

sudo echo "Acquire::http::proxy  "http://"$prox":"$port"/";" | sudo tee -a /etc/apt/apt.conf > /dev/null 2>&1
sudo echo "Acquire::https::proxy  "https://"$prox":"$port"/";" | sudo tee -a /etc/apt/apt.conf > /dev/null 2>&1
sudo echo "Acquire::ftp::proxy  "ftp://"$prox":"$port"/";" | sudo tee -a /etc/apt/apt.conf > /dev/null 2>&1

Embora os comandos escrevam no arquivo apt.conf, mas ao executar o script, recebo o seguinte erro:

E: Syntax error /etc/apt/apt.conf:6: Extra junk at end of file

Ajuda apreciada sobre isso!

    
por Hritik Gupta 02.07.2017 / 22:50

2 respostas

2

A resposta de Ravexina identifica corretamente o motivo subjacente:

% bl0ck_qu0te%

No entanto, se você achar que aspas difíceis de serem lidas ou simplesmente feias, existe uma alternativa:

printf 'Acquire::http::proxy "http://%s:%u";\n' "$prox" "$port" | sudo tee -a /etc/apt/apt.conf > /dev/null

Acho que você pode fazer as outras duas linhas por conta própria.

Sugestões de melhorias:

Há muita repetição em seu código que você poderia evitar com um loop:

for proto in http https ftp; do
    printf 'Acquire::%s::proxy "%s://%s:%u";\n' "$proto" "$proto" "$prox" "$port"
done |
sudo tee -a /etc/apt/apt.conf > /dev/null
    
por David Foerster 02.07.2017 / 23:35
1

Você precisa citar o valor de configuração:

"Acquire::http::proxy  \""http://"$prox":"$port""\";"

Se você tentar ecoar:

echo "Acquire::http::proxy  \""http://"$prox":"$port""\";"

a saída deve ser como:

Acquire::http::proxy  "http://x.x.x.x:yy";

E não:

Acquire::http::proxy  http://x.x.x.x:yy/;

Porque http://x.x.x.x:yy/ é um lixo de olho em apt .

Além disso, você não precisa de sudo antes de echo como David mencionou;)

    
por Ravexina 02.07.2017 / 23:25