RHEL 7에서 플로피 디스크 삽입을 감지하고 스크립트를 실행하는 방법은 무엇입니까?

RHEL 7에서 플로피 디스크 삽입을 감지하고 스크립트를 실행하는 방법은 무엇입니까?

VMware ESXi 6 인프라에서 실행되는 RedHat 7 가상 머신이 있습니다. 플로피 디스크 삽입 이벤트를 감지한 다음 해당 삽입 이벤트를 기반으로 스크립트를 시작해야 합니다.

나의 초기 접근 방식은 플로피 삽입 시 스크립트 실행을 트리거하기 위해 Udev 규칙을 사용하는 것이었지만 이벤트가 실행되지 않는 것 같습니다.

/etc/udev/rules.d/99-my.rules

SUBSYSTEM=="block", KERNEL=="fd0", ACTION=="change", RUN+="sh -c /my-custom-script"

그것이 작동하지 않았을 때 나는 문제를 해결하려고 노력했고 플러그인에서 실행하는 대신 몇 분마다 플로피를 마운트하고 특정 파일이 마운트 지점에 있는지 테스트하는 크론 작업을 작성했습니다. 그러나 플로피를 삽입하지 않으면 다음과 같은 불쾌한 출력이 발생합니다.

end_request: I/O error, dev fd0, sector0

그래서 저는 Udev 규칙이 작동하지 않는 이유를 알아내려고 노력했습니다. 제가 Udev 규칙을 잘못된 방식으로 사용하고 있는 걸까요, 아니면 이를 달성할 수 있는 다른 방법이 있나요?

답변1

내가 아는 한, udev는 플로피 드라이브를 모니터링하는 방법을 제공하지 않습니다. 플로피 드라이브는 삽입을 감지하는 수단을 제공하지 않습니다. 디스크 삽입을 감지하려면 드라이브를 지속적으로 폴링해야 합니다.

diskd유틸리티는 귀하의 요구를 충족시킬 수 있습니다. 지속적으로 드라이브를 폴링하고 연결되면 명령을 종료하거나 실행합니다. 그것은 일부이다fdutils, Debian 아래 저장소에서 설치할 수 있습니다. RHEL/Fedora에서는 소스 코드를 컴파일해야 합니다.

용법:

diskd [-d drive] [-i interval] [-e command]

다음은 디스크 드라이브를 모니터링하고, 연결 시 마운트한 다음 종료해야 합니다. 나는 IDE 플로피 드라이브(LS-120 SuperDisk)만 가지고 있기 때문에 이것을 시도하지 않았습니다.

diskd -d /dev/fd0 -e "udisks --mount /dev/fd0 --mount-fstype=vfat"

floppy플로피 장치(예: )에 직접 액세스해야 하므로 루트가 아닌 사용자로 이 그룹을 실행하려면 이 그룹의 구성원 이어야 합니다 /dev/fd0. FDPOLLDRVSTATioctl(참고자료 참조 )을 사용하여 man 4 fd장치를 폴링합니다.

게다가매뉴얼 페이지/문서다음과 같은 경고가 있습니다.

프로그램은 짧은 시간 동안 모터를 켠 다음 트랙 1을 찾는 방식으로 작동합니다. 장기적으로 하드웨어가 손상될 수 있습니다. Amigas도 이러한 기술을 사용했지만 디스크 드라이브는 몇 달 사용 후 제대로 회전하지 않는 것으로 알려져 있습니다.

이것이 정말 심각한 문제인지는 잘 모르겠지만, 프로덕션 환경에서 사용하려는 경우 예비 드라이브를 준비하는 것이 유용할 수 있습니다. 더 이상 그렇게 비싸지 않죠?

(이 fdmountd유틸리티는 꽤 오래된 것처럼 들리며 "최신" 커널의 일반 FAT12 형식 디스크에서 작동할지 의심됩니다.)

관련 정보