dbus 신호에서 스크립트를 어떻게 실행합니까?


13

임의의 dbus 신호에서 스크립트를 실행할 수 있습니까? 권한이없는 사용자로 실행되며 루트 권한이 없어도 Upstart와 같은 것이 있습니까?

블루투스 이벤트가 내 음악 플레이어를 시작할 때까지 기다리는 바보 같은 스크립트를 이미 작성했기 때문에 묻습니다 . 이제 컴퓨터가 특정 네트워크에 연결되거나 다른 장치가 연결될 때 비슷한 작업을 수행하려고합니다.

편집 : 내 원래 질문은 이것을 지정하지 않았지만 "이벤트 세트 중 하나와 여러 스크립트를 연결"을 의미했습니다. 따라서 여러 스크립트를 관리하는 동일한 시작 프로그램 (예 : Upstart)이 있습니다. 각각 다른 dbus 신호를 처리합니다. 모든 사용자 공간에 있습니다.


어쩌면 그것은 당신이 찾는 것이 아닐 수도 있지만, 당신이 시작에 대해 이야기 할 때 내 마음에 팝업되었습니다. systemd로 스크립트를 트리거 할 수 있습니다 . 어떤 유형의 장치가 귀하의 블루투스 장치를 생성하는지 확실하지 않지만 하나가 있다고 생각합니다.
sumid

답변:


16

당신은 필요 dbus-monitor

스크립트는 다음과 같습니다

#!/bin/bash

interface=org.gnome.Rhythmbox.Player
member=playingUriChanged

# listen for playingUriChanged DBus events,
# each time we enter the loop, we just got an event
# so handle the event, e.g. by printing the artist and title
# see rhythmbox-client --print-playing-format for more output options

dbus-monitor --profile "interface='$interface',member='$member'" |
while read -r line; do
  printf "Now playing: "
  rhythmbox-client --print-playing
done

stackoverflow 에서 가져 왔습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.