コマンドラインから再起動せずにUbuntuシステムプロキシ設定を設定する


14

を使用していUbuntu 14.04ます。http proxyコマンドラインから設定を変更したい。これは、GUIで変更し([すべての設定]-> [ネットワーク]-> [ネットワークプロキシ])、ボタンをクリックするのと同じApply System Wideです。script(bash)から設定を動的に変更することを計画しているため、システムを再起動/ログアウトしたくありません。


askubuntu.com/questions/175172/...。答えのコメントでは、やると言っていますsudo service network manager restart
ラメシュ14

@Rameshそれは動作しません。私はすでにその質問を経験しました。
ma08 14

回答:


15

私が理解していることから、そのGUIを介してシステム全体でプロキシを設定すると、3つのことが行われます:

  1. dconfデータベースに対応する値を設定します。
  2. で値を設定します/etc/environment
  3. で値を設定します/etc/apt/apt.conf

1と3はすぐに有効になります。/etc/environmentはログイン時に解析されるため、それを有効にするにはログアウトしてログインする必要があります。(これはログインシェルを実行するだけでなく、適切なログインであることに注意してください。)次のスクリプトは同等である必要があります(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

/etc/environmentすべての場所に適用するにはPAMの再ログインが必要ですが、現在のシェルでは、そのファイルの値を抽出できます。

export http_proxy=$(pam_getenv http_proxy)

@ ma08の出力はgsettings get org.gnome.system.proxy mode; gsettings get org.gnome.system.proxy.http host; gsettings get org.gnome.system.proxy.http port;何ですか?
ムル14

これで問題が発生(process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refusedしました。通常のユーザーとしてスクリプトを実行すると、gsettingsの各コマンドに対して警告が表示されます。ルートとして実行すると、正常に動作しますが、上記のコマンド(get)の出力は、ルートでのみ変更され、通常のユーザーでは出力されません。
ma08 14

Aaarghh ..いまいましいスクリプトにはバグが散らばっています。それは私が修正しなければならなかった3つです。:/秒でsudo tee、ファイル名があることに注意してくださいこと/etc/environmentはありません/etc/apt/apt.conf。apt.confのガベージエントリを削除する必要がある場合があります。
ムル14

問題は、以前のコメントで言った警告のようです。
ma08 14

1
スクリプトが機能し、リンクの回答がそのエラーを克服するのに役立ちました。デバッグは自分で行う必要がありました。どうもありがとう。
ma08 14

3

タスク全体を簡素化するためのツールProxyManを作成しました。このリンクからダウンロードできます。

また、バックエンドの機能を知りたい場合は、コードを見ることができます。zipファイルをダウンロードして展開し、ターミナルで展開されたファイルの場所に移動すると、次のコマンドが役立ちます。

  • bash main.sh:プロキシを設定および設定解除します。
  • bash proxy_check.sh:現在のプロキシ設定を確認します。

1
これは素晴らしい小さなツールです!たくさんの仕事を救ってくれました!
Gh0sT

-2

私はこれが頭痛を避けるべきだと思う:

プロキシ設定ビデオ

Pythonで実行される優れたチュートリアル。Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10以降でのシンプルで認証済みのプロキシ設定の設定

解決策1 システムを「python」にインストールする必要があります。コマンドを実行するインタープリターで:コマンド:「sudo python setproxy.py [Proxy_Server] [proxy_port] [PROXY_USER] [proxy_password]」

ビデオ:https : //www.youtube.com/watch?v=eBtzKa-dvJg

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

解決策2: コマンド:

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

必要に応じてフィールドに入力します。

- Proxy server
- Proxy port
- User
- Password

2
これを良い答えにするには、少なくとも手順の概要を説明する必要があります。
ジュリーペレティエ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.