Atur Pengaturan Proxy Sistem Ubuntu tanpa Restart dari commandline

14

Saya menggunakan Ubuntu 14.04. Saya ingin mengubah http proxypengaturan dari baris perintah. Ini harus sama dengan mengubah dalam GUI (Semua Pengaturan-> Jaringan-> Proksi Jaringan) dan mengklik tombol Apply System Wide. Saya tidak ingin me-restart / logout sistem karena saya berencana untuk mengubah pengaturan secara dinamis dari skrip ( bash).

ma08
sumber
askubuntu.com/questions/175172/… . Dalam komentar jawabannya, dikatakan harus dilakukan sudo service network manager restart.
Ramesh
@ Ramesh itu tidak berhasil. Saya sudah membahas pertanyaan itu.
ma08

Jawaban:

15

Dari apa yang saya mengerti, pengaturan proxy di seluruh sistem melalui GUI melakukan tiga hal:

  1. Tetapkan nilai yang sesuai di basis data dconf.
  2. Tetapkan nilai dalam /etc/environment.
  3. Tetapkan nilai dalam /etc/apt/apt.conf.

1 dan 3 segera berlaku. /etc/environmentdiuraikan saat masuk, jadi Anda harus keluar dan masuk agar itu berlaku. (Perhatikan bahwa ini adalah proses masuk yang benar, tidak hanya menjalankan shell login.) Skrip berikut harus setara (dengan anggapan proksi http / https):

#! /bin/bash
HTTP_PROXY_HOST=proxy.example.com
HTTP_PROXY_PORT=3128
HTTPS_PROXY_HOST=proxy.example.com
HTTPS_PROXY_PORT=3128

gsettings set org.gnome.system.proxy mode manual
gsettings set org.gnome.system.proxy.http host "$HTTP_PROXY_HOST"
gsettings set org.gnome.system.proxy.http port "$HTTP_PROXY_PORT"
gsettings set org.gnome.system.proxy.https host "$HTTPS_PROXY_HOST"
gsettings set org.gnome.system.proxy.https port "$HTTPS_PROXY_PORT"

sudo sed -i.bak '/http[s]::proxy/Id' /etc/apt/apt.conf
sudo tee -a /etc/apt/apt.conf <<EOF
Acquire::http::proxy "http://$HTTP_PROXY_HOST:$HTTP_PROXY_PORT/";
Acquire::https::proxy "http://$HTTPS_PROXY_HOST:$HTTPS_PROXY_PORT/";
EOF

sudo sed -i.bak '/http[s]_proxy/Id' /etc/environment
sudo tee -a /etc/environment <<EOF
http_proxy="http://$HTTP_PROXY_HOST:$HTTP_PROXY_PORT/"
https_proxy="http://$HTTPS_PROXY_HOST:$HTTPS_PROXY_PORT/"
EOF

Meskipun memerlukan login ulang untuk PAM untuk diterapkan di /etc/environmentmana-mana, dalam shell saat ini Anda masih dapat mengekstraksi nilai-nilai dalam file itu:

export http_proxy=$(pam_getenv http_proxy)
muru
sumber
@ ma08 Apa outputnya gsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;?
muru
Sekarang saya mendapatkan masalah, ketika saya menjalankan skrip sebagai pengguna normal, peringatan muncul (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refuseduntuk setiap perintah di gsettings. Jika saya menjalankannya sebagai root, itu berfungsi dengan baik tetapi output dari perintah di atas (get) adalah yang diubah hanya di root tetapi tidak di pengguna normal.
ma08
Aaarghh .. Script sialan itu penuh dengan bug. Itu tiga yang harus saya perbaiki. : / Dalam yang kedua sudo tee, perhatikan bahwa nama file itu /etc/environmentdan tidak /etc/apt/apt.conf. Anda mungkin harus menghapus entri sampah di apt.conf.
muru
Masalahnya tampaknya adalah peringatan yang saya katakan di komentar sebelumnya.
ma08
1
Terima kasih, skrip Anda berfungsi dan jawaban di tautan membantu mengatasi kesalahan itu. Seharusnya saya melakukan debugging sendiri. Terima kasih banyak.
ma08
3

Saya membuat alat, ProxyMan, untuk menyederhanakan seluruh tugas. Anda dapat mengunduhnya dari tautan ini .

Juga, Anda dapat melihat kode jika Anda lebih tertarik untuk mengetahui fungsi backend. Unduh file zip, ekstrak, pergi ke lokasi file yang diekstraksi di terminal dan perintah berikut akan membantu Anda:

  • bash main.sh: untuk mengatur dan membatalkan proksi.
  • bash proxy_check.sh: untuk memeriksa pengaturan proxy Anda saat ini.
Himanshu Shekhar
sumber
1
Ini adalah alat kecil yang luar biasa! Menghemat saya banyak pekerjaan!
Gh0sT
-2

Saya pikir ini harus menghindari sakit kepala:

Video Pengaturan Proxy

Tutorial yang sangat baik, berjalan dalam python. Pengaturan Pengaturan Proxy Sederhana dan Otentikasi di Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 dan di atas 100% Bekerja.

Solusi 1 Sistem harus diinstal "python". Dengan interpreter menjalankan perintah: Command: "sudo python setproxy.py [Proxy_Server] [proxy_port] [PROXY_USER] [proxy_password]"

Video: https://www.youtube.com/watch?v=eBtzKa-dvJg

[ Proxy_Server ] : proxy.test.ts
[ Proxy_port ] : 8080
[ PROXY_USER ] : domainuser
[ Proxy_password ] : " the_password "

Solusi 2: perintah:

"Sudo apt- get install python- support"
"Sudo apt- get install ntlmaps "

Isi kolom yang sesuai:

- Proxy server
- Proxy port
- User
- Password
Felix Aballi
sumber
2
Untuk membuat ini menjadi jawaban yang baik, setidaknya Anda harus menguraikan langkah-langkahnya.
Julie Pelletier