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

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

에서 몇 가지 질문을 찾았습니다.http://unix.stackexchange.com& 에http://stackoverflow.comudev 규칙에 따른 시작 스크립트와 관련됩니다. 하지만 실행에 대한 정확한 해결책이나 특정 답변을 찾을 수 없습니다.세게 때리다스크립트.

그래서 나는 (정규적인) 질문을 하고 있습니다:udev 규칙을 통해 Bash 스크립트를 실행/실행/실행하는 방법은 무엇입니까?

제가 발견한 또 다른 사실은udev 규칙 작성이다:

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

따라서 가능하다면 "실행 방법"을 알고 싶습니다.배쉬 스크립트udev 규칙에 따라요?"


다음은 bash-script를 실행하는 간단한 예입니다.

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그리고 내 pendrive(위에 나열된 SanDisk)가 연결되었을 때 실험적인 명령을 실행하고 싶습니다 .

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

#!/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!"'

관련 정보