USB가 연결되면 쉘 스크립트가 실행되지 않습니다

USB가 연결되면 쉘 스크립트가 실행되지 않습니다

내 iPhone이 Raspberry Pi에 연결되어 있고 Raspbian을 실행할 때 쉘 스크립트를 실행하려고 합니다.

이것이 내가 지금까지 가지고 있는 것입니다: /etc/udev/rules.d/test.rules에서:

ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1227", RUN+="/home/pi/testscript.sh"

스크립트가 실제로 실행되고 있지 않다고 생각하는데 스크립트가 실제로 실행되고 있는지 어떻게 확인할 수 있습니까? 이것이 올바른 구문입니까?

답변1

스크립트는 실행 가능해야 합니다.

문제를 찾으려면 다음 단계를 따르세요.

먼저 간단한 스크립트를 작성하십시오.

sudo nano /bin/device_added.sh

device_added.sh스크립트에 다음 줄을 추가하세요.

#!/bin/bash echo "USB device added at $(date)" >>/tmp/scripts.log

두 번째 스크립트를 엽니다.

sudo nano /bin/device_removed.sh

device_removed.sh그런 다음 스크립트 에 다음 줄을 추가합니다 .

#!/bin/bash echo "USB device removed at $(date)" >>/tmp/scripts.log

파일을 저장하고 닫은 다음 두 스크립트를 모두 실행 가능하게 만듭니다.

$ sudo chmod +x /bin/device_added.sh $ sudo chmod +x /bin/device_removed.sh

다음으로, 위 스크립트의 실행을 트리거하는 규칙을 생성합니다./etc/udev/rules.d/80-test.rules

nano /etc/udev/rules.d/80-test.rules

여기에 다음 두 가지 규칙을 추가합니다.

SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_added.sh" SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_removed.sh"

파일을 저장하고 닫습니다. 그런 다음 루트로서 systemd-udevd에게 다음을 실행하여 규칙 파일을 다시 로드하도록 지시합니다(이렇게 하면 커널 모듈 인덱스와 같은 다른 데이터베이스도 다시 로드됩니다).

sudo udevadm control --reload

이제 iPhone이나 다른 USB 드라이브를 컴퓨터에 연결하고 device_added.sh스크립트가 실행되는지 확인하십시오. 먼저 파일 scripts.log/tmp.

그러면 파일에는 "USB 장치가 날짜_시간에 제거되었습니다"와 같은 항목이 있어야 합니다.

이 단계가 올바르면 /bin/device_added.sh이 스크립트를 귀하의 스크립트로 바꿀 수 있습니다. 규칙을 입력하세요./etc/udev/rules.d/80-test.rules

udev는 Linux에서 장치 감지 관리에 사용됩니다.

답변2

udevadm monitorUSB 장치를 실행 하고 연결하십시오. udev가 정확히 무엇을 했는지 알려줄 것입니다.

관련 정보