명령 줄에서 다시 시작하지 않고 Ubuntu 시스템 프록시 설정


14

사용하고 Ubuntu 14.04있습니다. http proxy명령 행에서 설정 을 변경하고 싶습니다 . 이것은 GUI (모든 설정-> 네트워크-> 네트워크 프록시)에서 변경하고 버튼을 클릭하는 것과 같습니다 Apply System Wide. script ( bash) 에서 동적으로 설정을 변경할 계획이므로 시스템을 다시 시작 / 로그 아웃하고 싶지 않습니다 .


askubuntu.com/questions/175172/… . 답변에 대한 의견에서 sudo service network manager restart.
Ramesh

@Ramesh 작동하지 않습니다. 나는 이미 그 질문을 겪었다.
ma08

답변:


15

내가 이해 한 바에 따르면, GUI를 통해 시스템 전체에 프록시를 설정하면 세 가지 작업이 수행됩니다.

  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

PAM을 /etc/environment어디에나 적용하려면 다시 로그인해야하지만 현재 셸에서는 해당 파일의 값을 계속 추출 할 수 있습니다.

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;무엇입니까?
muru

이제 일반 사용자로 스크립트를 실행할 때 문제가 발생합니다. 경고 (process:9662): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused는 gsettings의 각 명령에 대해 나타납니다 . 루트로 실행하면 정상적으로 작동하지만 위 명령 (get)의 출력은 루트에서만 변경되지만 일반 사용자는 아닙니다.
ma08

Aaarghh .. 망할 스크립트는 버그로 가득 차 있습니다. 내가 고쳐야 할 세 가지입니다. : / 두 번째로 sudo tee파일 이름은 /etc/environment그렇지 않습니다 /etc/apt/apt.conf. apt.conf에서 가비지 항목을 삭제해야 할 수도 있습니다.
muru

문제는 내가 이전에 언급 한 경고 인 것 같습니다.
ma08

1
감사합니다. 스크립트가 작동하고 링크의 답변이 해당 오류를 극복하는 데 도움이되었습니다. 디버깅을 직접 수행해야했습니다. 고마워
ma08

3

전체 작업을 단순화하기 위해 ProxyMan 도구를 만들었습니다. 이 링크 에서 다운로드 할 수 있습니다 .

또한 백엔드 기능에 대해 더 관심이있는 경우 코드를 살펴볼 수 있습니다. zip 파일을 다운로드하고 압축을 풀고 터미널에서 압축이 풀린 파일의 위치로 이동하면 다음 명령이 도움이 될 것입니다.

  • bash main.sh : 프록시를 설정 및 설정 해제합니다.
  • bash proxy_check.sh : 현재 프록시 설정을 확인하십시오.

1
이것은 멋진 작은 도구입니다! 많은 작업을 저장했습니다!
Gh0sT

-2

나는 이것이 두통을 피해야한다고 생각한다.

프록시 설정 비디오

파이썬에서 실행되는 훌륭한 튜토리얼. Ubuntu 12.04 / 12.10 / 13.04 / 13.10 / 14.04 / 14.10 이상에서 100 % 이상 작동하는 단순하고 인증 된 프록시 설정

해결 방법 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
이것을 좋은 대답으로 만들려면 최소한 단계를 간략히 설명해야합니다.
Julie Pelletier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.