네트워크 연결에서 OS X 10.6에서 스크립트를 실행하십시오. (/etc/network/if-up.d/와 같은)


17

Mac OS X에서 네트워크 인터페이스가 나타날 때 스크립트를 실행할 수있는 방법이 있습니까?

ip-up이라는 스크립트를 / etc / ppp에 넣으려고했지만 무선 네트워크 연결을 끊었다가 다시 연결할 때 실행되지 않는 것 같습니다.

네트워크 상태가 변경되었는지 지속적으로 확인하기 위해 cron 작업을 실행하지 않아도됩니다. 일부 Linux 배포판에서는 /etc/network/if-up.d/에 스크립트를 넣어서이를 수행 할 수 있습니다. Mac OS X와 ​​비슷한 것이 있습니까?

답변:


5

MarcoPolo 또는 웹 사이트에 나열된 유사한 유틸리티 중 하나를 사용해 볼 수 있습니다. 미니멀리스트라면 위치 체인저 가 유망 해 보입니다.


1
추가 프로그램을 설치하지 않고이 작업을 수행하고 싶습니다. 그러나 위치 체인저 링크는 네트워크 변경시 프로그램을 실행하기 위해 시작된 구성을 포함하므로 매우 유용했습니다.
Zxaos

1
Zxaos : 물론입니다. 그것이 제가 포함시킨 이유입니다. 기본적으로 원하는대로 시작 / bash 스크립트 템플릿입니다. 상용구 코드를 직접 작성하지 않아도됩니다.
Daniel Beck

이 매우 관련성이 높은 q ( superuser.com/questions/265861 ) 를 보도록 귀찮게한다면 OSX의 명령 줄에서 VPN을 시작하고 중지하는 방법에 대해 감사드립니다. 요청을 실례하지만 몇 시간 안에이 댓글을 삭제하겠습니다. 어쨌든 감사합니다!
Dan Rosenstark

1
@Yar 문제는 없지만 지금은 중부 유럽에서 자정이 지났으므로 지금 반나절 정도 기다렸다가 다시 핑을 시작하십시오 (그 동안 아무것도 나타나지 않으면 흥미로운 질문입니다).
Daniel Beck

@Daniel Beck에게 감사합니다. 이미 본 것처럼 Applescript를 사용하는 것이 답이었습니다. 아마도 OSX의 많은 것들에 관한 것이지만 종종 잊어 버립니다.
Dan Rosenstark

19

에이전트 시작 /etc/resolv.conf및 두 개의 네트워크 관련 .plist 파일 /Library/Preferences/SystemConfiguration/이 작동하는 것 같습니다 (Mac OS X 10.8.4).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ifup.ddns</string>

  <key>LowPriorityIO</key>
  <true/>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/Shared/bin/ddns-update.sh</string>
  </array>

  <key>WatchPaths</key>
  <array>
    <string>/etc/resolv.conf</string>
    <string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
    <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
  </array>

  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

이전에는 /etc/resolv.conf 만 사용했지만 충분하지 않은 경우가있었습니다.


이것은 매우 도움이되었지만 오류가 있습니다 ([this answer] [1]에 의해 발견됨). 여는 <plist version="1.0">태그가 없습니다. [1] [ apple.stackexchange.com/a/181127/56862]
LiberalArtist

@patrix (및 LiberalArtist) : 수정 해 주셔서 감사합니다. 나는 그것이 10.8.5에서 나를 위해 일했기 때문에 눈치 채지 못했습니다. 나는 이후 버전이 더 엄격하다고 생각합니다.
mivk April

@mivk이 SystemConfiguration파일 에서 정확히 무엇을 변경해야 합니까? 네트워크 케이블을 연결 / 분리하면 아무 변화도 없습니다.
IceFire

이것은 가깝게 보이지만 Wi-Fi를 껐다가 다시 켜면 네트워크 연결이 끊어 질 때만 다시 연결되지 않고 프로그램이 실행됩니다. 나는 것을 볼 않는 /etc/resolv.conf내 와이파이 상태 변경, 그래서 나는 확실히 그것은 단지 분리에서 실행중인 왜 안있을 때 파일을 삭제하고 다시 추가됩니다.
Matt Huggins 17 년

5

네트워크 변경, 파일 시스템 활동, 응용 프로그램 시작 등과 같은 많은 시스템 이벤트에 응답하여 스크립트를 정확하게 실행할 수있는 crankd 사용을 고려해야합니다 .

합리적인 문서를 찾을 수 없었기 때문에 crankd 사용을 시작하는 방법 에 대한 작은 블로그 게시물도 작성했습니다 .


귀하의 블로그는 익명의 독서로부터 보호됩니다. 여기에 내용 복제를 고려하십시오.
nfirvine

미안합니다. 내 블로그가 이동 했으므로 URL을 방금 업데이트했습니다. 내 게시물의 일부 정보가이 답변으로 마이그레이션 될 수 있다고 생각되면 답변을 수정하십시오.
Juan A. Navarro

4

이것은 bash에서 작동하는 것 같습니다.

(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
 scutil | \
 awk '/notification/ {system("echo change")}'

대체 echo change당신은 당신의 명령에 아무것도 인용해야하는 경우, 사용해야한다는 점을 염두에두고, 당신의 명령 '\'':

(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
 scutil | \
 awk '/notification/ {system("echo '\''&'\''")}'

3

ControlPlane : "컨텍스트 감지 컴퓨팅"

ControlPlane은 MarcoPolo의 직접 포트이며 실제로 MarcoPolo의 많은 구성은 여전히 ​​ControlPlane과 함께 작동합니다. ControlPlane은 Snow Leopard 이상을 실행하는 32 비트 및 64 비트 Intel 기반 Mac을 지원합니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


2

시작으로 시작하십시오. 이를 사용하여 유사한 기능을 수행 할 수 있습니다.

편집 : 9 년 후, 아닐 수도 있습니다. 이 Wikipedia 항목 에 따르면 :

2014 년 OS X 10.10 및 iOS 8에서 Apple은 시작 코드를 비공개 소스 libxpc로 옮겼습니다.


launchd는 올바른 방향으로 나아가는 단계 인 것처럼 보입니다. 특히 다른 프로그램이 네트워크 변경을 감지하는 데 어떻게 다른 프로그램을 사용하는지 알아낼 수 있다면 더욱 그렇습니다.
Zxaos

@Zxaos, launchd 는 올바른 방향으로 나아가는 것처럼 보이지만 네트워크 변경을 감지하는 확실한 방법은 없습니다. 대신 크랭크 를 사용하는 솔루션에 대한 내 대답 을 참조하십시오 .
Juan A. Navarro

URL은 404 페이지로 연결됩니다.
Slaven Rezic

@ Slaven-Rezic 답변을 업데이트하고 기존 링크를 제거했습니다.
CaseyIT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.