Bash 스크립트로 Mac OS X의 프록시 정보를 얻으려면 어떻게해야합니까?


13

랩톱에 직장, 집 등 여러 네트워크 위치가 설정되어 있습니다. 업무용 서버에는 프록시 서버가 설정되어 있지만 다른 서버에는 설치되어 있지 않습니다. 시스템 프록시 플러그인을 사용하는 Safari, Mail, Firefox 및 Thunderbird와 같은 OSX 응용 프로그램에 적합 합니다.

터미널 응용 프로그램과 같은 git, svn, gem, 그리고 curl내에서 다음을 가지고 .bash_profile:

export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY

내 질문은 이것입니다 : 내 보낸 변수가 내 시스템의 현재 위치에서 값을 조회하게하는 방법이 있습니까? 나는 그것이 동적으로 (터미널 세션 동안 나는 변화의 위치가 변경됩니다 그렇다면) 할 것을 선호 싶지만, 한 때를 설정하는 것이 만족하실 것 .bash_profileRAN (나는 새로운 터미널 세션을 시작해야 할 것이다 의미 위치를 변경했을 때).

감사!


다음은 프록시 정보 및 설정 HTTP_PROXY와 https_proxy를 추출 networksetup 및 보안 사용하는 bash는 스크립트입니다 gist.github.com/alexargo/4657760

답변:


8

Mac OS X의 버전은 무엇입니까? 도구가 Mac OS X 10.4 또는 이전 버전에 포함되어 있다고 생각하지 않습니다.

networksetup찾고있는 것이어야합니다 sudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE(예 : sudo networksetup -getwebproxy Airport)

출력은 다음과 같이 나타납니다.

Enabled: Yes
Server: SERVER_ADDRESS
Port: 123
Authenticated Proxy Enabled: 0 for false, 1 for true

따라서 출력을 사용 가능한 것으로 변환해야합니다.

awk를 몇 번 사용하는 정말 조잡한 예는 다음과 같습니다 (제 awk 기술은 다소 기본입니다).

sudo networksetup -getwebproxy Airport | awk {'print $2'} | awk {'getline l2; getline l3; print "http://"l2":"l3'} | head -n 1

출력 결과 http://SERVER_ADDRESS:123


6
모든 서비스 목록 :networksetup -listallnetworkservices
Arjan

2
나는 그 아이디어를 좋아하지만 나에게는 효과가 없다. 방금한다면 sudo networksetup -getwebproxy Ethernet인쇄물을 얻은 다음 segfault를 얻습니다. segfault가 파이프를 망가뜨릴 것이라고 생각하므로 awk구문 분석 할 것이 없습니다.
James A. Rosen

정보 출력이 있습니까? 그리고 awk 명령없이 여전히 segfault입니까?
Chealion

나는 실제로 내 Mac에서 한 번 세분화 오류를 보았습니다. 현재 10.5.8 또는 10.6.1 (Intel 모두)에 문제가 없습니다. 어쩌면 다른 버전을 사용하고 있습니까?
Arjan

나는 10.5.8에 있으며 awk. awk를 추가하면 segfault 메시지가 사라집니다. . . 다른 모든 출력과 함께.
James A. Rosen

4

위의 답변 에서 포트 번호를 포함하지 않는 방법에 대한 tlrobinson의견이 있습니다 .

HTTP 프록시 포트를 사용 하여 HTTP 프록시 서버 를 전환하여이를 수행 할 수 있습니다.

나는 또한 이것을 이렇게 보았다 :

system_profiler SPNetworkDataType | grep "HTTP Proxy Server" | awk '{print $4}' | head -1
system_profiler SPNetworkDataType | grep "HTTP Proxy Port" | awk '{print $4}' | head -1

3

또한이 명령은 다른 프록시 설정을 찾는 데 도움이 될 수 있습니다. scutil --proxy


1

다음은 효과가있는 것 같지만 얼마나 강력한 지 잘 모르겠습니다.

system_profiler SPNetworkDataType|grep "HTTP Proxy Server"|awk {'sub(/^.*:[ \t]*/, "", $0); print $0;'}

위치가 proxy.pac하드 코딩 된 프록시 위치 대신에 위치를 사용하는 경우 작동하지 않습니다 .


불행히도 이것은 포트 번호를 포함하지 않는 것 같습니다.
tlrobinson

0

내가 쓴 작은 도구를 사용하면 프록시에 일반적으로 사용되는 환경 변수를 설정할 수 있습니다 . 사용법은 간단합니다.

  1. xCode로 컴파일하십시오.
  2. 더하다:

    eval `./path/to/export-proxies`

    당신에게 .profile, .bashrc또는 .bash_profile.

이 같은 변수를 사용할 수있는 한 $HTTP_PROXY, $http_proxy, $HttpProxy모든 프로토콜 등 (HTTP, FTP, SOCKS)를 포함하여 $NO_PROXY예외. 대부분의 CLI 도구에서 작동하며 OS X 제어판에서 설정을 가져옵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.