職場(ファイアウォールがあり、プロキシを介してインターネットに接続する必要があります)と家(プロキシは不要)の間を移動する必要があります。
Linuxにはグローバルプロキシ設定がなく、多くのプログラムがその親プロセス$http_proxy
から環境変数を継承するため、ログイン時に環境変数を設定する必要があります。私はファイルに次の行を追加しました(実際にKDEを使用して~/.profile
いるので、~/.config/plasma-workspace/env/proxy.sh
そのファイルの代わりにKDEによって起動時にソースを取得するファイルを作成しました.profile
)。
PROXY="some.proxy:22"
# http in lower and upper case variants
export http_proxy=$PROXY
export HTTP_proxy=$PROXY
export HTTP_PROXY=$PROXY
# https
export https_proxy=$PROXY
export HTTPS_proxy=$PROXY
export HTTPS_PROXY=$PROXY
これにより、環境変数がすべてのプログラムに表示され、新しいシェルを開くとその変数が表示されます。ただし、プロキシなしで接続するには、ファイルを削除するか、すべての行をコメントアウトしてログアウトしてから再度ログインする必要があります。
プロキシに接続できるかどうか(netcatを使用)試してみましたが、この場合はhttps環境変数をエクスポートする起動スクリプトを作成してみました。
server="100.100.100.100"
PROXY="some.proxy:22"
export test="TEST2"
export test2=$(which nc)
nc -w 2 -z 100.100.100.100 22 -v > ~/Desktop/test.txt 2>&1
if nc -w 9 -z $server 22 2>/dev/null; then
# http in lower and upper case variants
export http_proxy=$PROXY
export HTTP_proxy=$PROXY
export HTTP_PROXY=$PROXY
# https
export https_proxy=$PROXY
export HTTPS_proxy=$PROXY
export HTTPS_PROXY=$PROXY
fi
端末からこのスクリプトをインポートすると、. ./proxy.sh
環境変数がエクスポートされます(グローバルではなく現在の端末のみ)。ただし、NCが失敗したためログイン時には動作しません。これらのtest.txt
ファイルには以下が含まれます。
100.100.100.100: inverse host lookup failed: Host name lookup failure
(UNKNOWN) [100.100.100.100] 22 (http-alt) : Network is unreachable
どんな提案がありますか?プロキシサーバーに接続できることを確認し、それをすべての後続プロセスの環境変数に設定する別の方法はありますか?