USB 모뎀을 삽입할 때마다 스크립트를 실행하는 방법이 있습니까?

USB 모뎀을 삽입할 때마다 스크립트를 실행하는 방법이 있습니까?

USB 모뎀을 삽입할 때마다 쉘 스크립트가 실행되도록 하고 싶습니다.

어떻게 해야 할까요?

답변1

@Rinzwind가 제안한 것처럼 일부 udev 규칙을 사용하여 이를 수행할 수 있습니다.

먼저, 다른 사용자가 접근할 수 있는 곳에 스크립트를 저장하세요. 예를 들어 /usr/local/bin/script.sh.

이제 다른 사람이 스크립트에 액세스할 수 있도록 하세요.

sudo chmod 555 /usr/local/bin/script.sh

이제 USB 모뎀을 연결하고 lsusb. 다음은 출력 예입니다.

$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc. Mini stick Suunto
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

끝에 모뎀 이름이 있는 줄을 찾으세요. 이제 형식에서 가운데 ​​부분을 찾으세요 ID XXXX:####. 및 부분 XXXX####다음과 같습니다.공급업체 ID그리고장치 아이디각기.

이 예의 세 번째 줄( )에서 … ID 0fcf:1008 Dynastream …공급업체 ID는 0fcf이고 장치 ID는 입니다 1008. 귀하의 장치는 이러한 ID에 대해 서로 다른 값을 갖습니다.

이제 이 ID를 사용하여 udev에 대한 규칙을 생성하겠습니다.

이제 udev를 사용하여 이 장치에 대한 규칙을 만듭니다.

다음을 사용하여 규칙 파일을 만듭니다.

sudo nano /etc/udev/rules.d/90-local.rules

다음 줄을 추가합니다.

ACTION=="add", SUBSYSTEM=="usb", ATTRS{vendor}=="0xXXXX", ATTRS{device}=="0x####", RUN+="/usr/local/bin/script.sh"

XXXX다음으로 교체하세요 .공급업체 ID이전부터 ####다음으로 교체합니다.제품 ID이전부터.

이제 udev가 규칙을 다시 로드하도록 강제합니다. (또는 이 단계를 건너뛰고 재부팅할 수도 있습니다.)

udevadm control --reload-rules
sudo service udev restart

이제 끝났습니다!

출처:udev 규칙에 관한 SU에 대한 비슷한 질문,udev 규칙 생성

관련 정보