
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
이제 끝났습니다!