특정 볼륨이 연결될 때 작업 트리거


10

keepass2 비밀번호 데이터베이스가 포함 된 USB 키가 있는데 컴퓨터에 연결하면 다음과 같은 작업을 수행하려고합니다.

  • 특정 위치에 자동 마운트
  • 마운트가 올바르게 완료되면 비밀번호 데이터베이스 파일에서 keepass2를 시작하십시오.

내가 생각하는 간단한 작업이지만 그렇게하는 방법을 찾을 수 없습니다.

Ubuntu 12.10을 사용하고 있으며 장치를 "미디어 USB 키"로 자동 마운트하고 이미지가없는 경우에도 이미지를 열려고 시도합니다.

이를 수행하고 우분투 자동 마운트를 비활성화하는 가장 좋은 방법은 무엇입니까?

답변:


8

새 장치가 나타나면 udev 에 알립니다. 일반적으로 /dev내장 규칙 ¹에 따라 장치 파일을 만듭니다 . 이 규칙을 무시하여 장치 파일 위치를 변경하거나 임의의 프로그램을 실행할 수 있습니다. 다음은 udev 규칙과 같은 샘플입니다.

KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"

NAME=지시어는 내가 설명을 위해 그것을 포함하지만, 아마도 사용 사례 유용하지 않습니다, 장치 파일의 위치를 변경합니다. ATTRS규칙은 장치를 식별; 어떤 속성이 있는지 udevinfo -a -n /dev/sdz드라이브를 사용할 수있을 때 실행 /dev/sdz하십시오. 입력 ATTRS의 단일 섹션 에서만 규칙을 사용할 수 있습니다 udevinfo(또한 ATTR초기 섹션에서 규칙을 사용할 수 있음 ). 자세한 배경 은`udevadm info -a -n / dev / sdb '의 출력 이해를 참조하십시오 . 이 규칙은 다음과 같은 파일에 들어갑니다 /etc/udev/rules.d/local-storage-keypass.rules.

RUN지시문에 제공된 스크립트에서 실행하려는 명령을 넣으십시오 . 다음과 같은 것 :

#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
  [ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
  mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &

udev에서 트리거 된 스크립트에서 GUI 프로그램을 실행하는 데 문제가있는 경우 다른 사용자의 데스크탑에서 루트로 그래픽 프로그램을 시작할 수 있습니까?를 참조하십시오 .

¹ udevtmpfs가 있는 최신 시스템에는 /dev없습니다.


1
이것에 대한 중요 사항 :의 정보를 사용하여 규칙을 작성할 때 udevadm info -a -n /dev/sdX여러 조상을 기반으로 일치시킬 수 없습니다. 장치 자체의 데이터와 단일 조상 만 기준으로 일치시킬 수 있습니다. 이 내용은에서 다루지 man 7 udev만 쉽게 간과 할 수있는 작은 의견입니다.
Patrick

1

이를 수행하는 가장 좋은 방법은이 장치에 대한 고유 한 udev 규칙을 작성하는 것입니다. 불행히도 나는 결코 그렇게 한 적이 없으므로이를 수행하는 방법에 대한 팁을 줄 수 없습니다. 따라서 다른 사람이 더 자세한 답변을하지 않으면 Google에서 'udev 규칙'을 찾고 / lib / udev에서 예제를 찾으십시오. 사용자 정의 udev 규칙은 /etc/udev/rules.d에 있어야합니다.


정보에 대해서 감사드립니다. 이것은 적어도 내 검색을보다 효율적으로 만듭니다.
ereOn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.