udev 규칙에 따라 X 창을 표시하는 스크립트 실행

udev 규칙에 따라 X 창을 표시하는 스크립트 실행

몇 가지 문제점을 발견했습니다http://unix.stackexchange.com& 존재하다http://stackoverflow.comudev 규칙의 시작 스크립트와 관련됩니다. 하지만 수행할 정확한 솔루션이나 구체적인 답변을 찾을 수 없습니다.불다스크립트.

그래서 저는 다음과 같은 (표준적인) 질문을 합니다.udev 규칙을 통해 Bash 스크립트를 실행/시작/실행하는 방법은 무엇입니까?

또 발견한 사실udev 규칙 작성예:

udev는 활성 터미널에서 이러한 프로그램을 실행하지 않으며 쉘 컨텍스트에서 실행하지 않습니다. 프로그램이 실행 가능한 것으로 표시되어 있는지 확인하고, 쉘 스크립트인 경우 적절한 shebang(예: #!/bin/sh)으로 시작하는지 확인하고, 터미널에 표준 출력이 표시되지 않도록 하십시오.

그래서 "달리는 방법"이 가능한지 궁금했습니다.배쉬 스크립트udev 규칙에 따르면? "


이것은 bash 스크립트를 실행하는 간단한 예입니다.

99-myrule.rules나는 무엇보다도 다음과 같은 글을 썼습니다 /etc/udev/rules.d:

ACTION=="add", ATTR{idVendor}=="0781", ATTR{idProduct}=="5567", RUN+="/home/pandya/example.sh"

lsusb출력에서 공급업체와 제품 ID를 찾았습니다.

$ lsusb | grep SanDisk
Bus 001 Device 066: ID 0781:5567 SanDisk Corp. Cruzer Blade

zenity --info내 펜 드라이브(위에 나열된 SanDisk)가 연결된 동안 실험적인 명령을 실행하고 싶습니다 .

그래서 나는 /home/pandya/example.sh(udev 규칙에서 호출되는 RUN+=) contians를 작성했습니다:

#!/bin/bash
zenity --info &
exit

그러나 이 스크립트는 실행되지 않습니다(실행 권한이 있음에도 불구하고). 또한 다음을 시도했습니다.

  • export DISPLAY=:0이전 스크립트에서zenity --info
  • bash -c 'DISPLAY=:0 zenity --info

그리고 물론:

  • sudo restart udev
  • sudo udevadm control --reload-rules

하지만 출력을 얻을 수 없습니다 zenity --info.

그러므로udev 규칙을 통해 Bash 스크립트를 실행하는 방법은 무엇입니까? 혹시 빠진 것이 있으면 제안해 주세요.

답변1

대부분의 경우 명령이 실행 중이지만 출력을 표시할 위치를 알 수 없습니다. 나는 당신이 루트가 아닌 사용자를 사용하여 X에 로그인하고 있고 규칙이 루트로 실행될 가능성이 높다고 가정합니다. 다음 명령을 시도해 보십시오:

su - your_X_user_here -c 'export DISPLAY=:0;zenity --info'

실행을 위해배쉬 스크립트다음 명령을 따르십시오.

su - your_X_user_here -c 'export DISPLAY=:0; bash -c "/path/to/script.sh"'

답변2

나는 최근에 발견했다우아한 방법DISPLAY에 대해 걱정하지 않고 udev 규칙에서 GUI 또는 X 작업을 표시합니다. 사용되는 쉘 스크립트의 경우 원칙은 동일합니다 export.

IMPORT{program}="/usr/bin/xpub", \
RUN+="/bin/su $env{XUSER} -c '/usr/bin/notify-send Hello'"

$env{ENV}:현재 tty 사용자가 X를 시작하면, 그렇지 않으면 삭제합니다.뿌리.

답변3

이 글을 읽는 다른 분들에게 말씀드리자면, 제가 Kali Linux 2016에서 스크립트를 실행할 수 있는 유일한 방법은 다음과 같습니다.

#!/bin/bash
set -x
xhost local:root
export DISPLAY=:0.0
su root -c 'zenity --notification --text="I am a notification!"'

관련 정보