특정 무선 네트워크에 연결할 때마다 스크립트를 실행하는 방법이 있습니까?


14

내가 연결하는 특정 무선 네트워크가 있는데, vpnc를 사용하여 인터넷에 액세스해야합니다. 이를 위해 스크립트를 만들면이 네트워크에 연결할 때마다 스크립트가 실행되도록 설정하는 방법이 있습니까? 분명히하기 위해이 스크립트를 대부분의 무선 연결로 실행하지 않고 하나의 특정 연결로만 실행하고 싶습니다.

답변:


6

이를 위해 upstart 를 사용할 수 있습니다 . Upstart는 무선 네트워크 (또는 일반적으로 네트워크)에 연결하는 이벤트를 포착하여 스크립트를 실행하기위한 전제 조건으로 사용할 수 있습니다.

Upstart는 이미 우분투의 많은 스크립트에서 사용되고 있으며 결국 부팅시 모든 System V init 스크립트를 대체합니다.


5

Network Manager는 /etc/NetworkManager/dispatcher.d/ 디렉토리 (루트 소유, 실행 가능, 다른 사용자가 읽을 수없고 setuid가 아닌)에서 모든 스크립트를 실행합니다.

네트워크 관리자가 환경 변수를 설정하고이 스크립트에 전달합니다. CONNECTION_UUID 환경 변수 (고유 문자열 포함)에 관심이 있습니다.

따라서 문제를 해결하려면 (특정 무선 네트워크가 연결되어있을 때 스크립트를 실행하십시오) :

1) 관심있는 무선 연결의 UUID를 찾으십시오 (/ etc / NetworkManager / system-connections / 디렉토리의 해당 연결 파일 내부에서).

2) 환경 변수 CONNECTION_UUID가 위의 (1)에서 무선 네트워크의 uuid와 일치하는 경우 원하는 것을 수행하는 bash (또는 perl, python 또는 기타) 스크립트를 작성하십시오.

3)이 스크립트를 /etc/NetworkManager/dispatcher.d/에 넣고 소유자와 권한을 적절하게 설정하십시오.

추가 읽기 : man networkmanager (그리고 위에서 언급 한 디렉토리의 스크립트 주위에 약간의 파킹).


Wi-Fi에있는 Natty 시스템에서 해당 디렉토리는 비어 있습니다. 시스템 버전에 따라 다릅니 까?
nealmcb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.