pidgin 자동 상태 변경에 대한 DBUS 데이터를 얻을 수 없습니다.

pidgin 자동 상태 변경에 대한 DBUS 데이터를 얻을 수 없습니다.

저는 여기에 게시된 작업을 기반으로 스크립트를 사용하고 있습니다.cron을 사용하여 pidgin 상태 업데이트

Wi-Fi 연결이 끊어지기 전에 자동으로 연결이 끊어지고 Wi-Fi가 다시 연결될 때 다시 연결되는 wicd 스크립트를 만들려고 합니다.

그러나 dbus/pidgin은 환경 변수가 설정된 경우에도 dbus 세션을 찾을 수 없는 것 같습니다.

내 설정:

  • 아치리눅스
  • 피진 2.9.0
  • 리자 2.9.0-2

자동 로딩 스크립트(Xfce가 시작될 때 실행):

#!/bin/bash
touch /tmp/dbus_session_data
env | grep DBUS_SESSION_BUS_ADDRESS > /tmp/dbus_session_data
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /tmp/dbus_session_data

스크립트 실행 후 tmp 파일:

[skaverat@eeepthought ~]$ cat /tmp/dbus_session_data 
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-gZMqzhdS2S,guid=9b8b3169f14346902127832000000043
export DBUS_SESSION_BUS_ADDRESS

좋아요, 다른 환경으로 가보겠습니다.

[root@eeepthought ~]# env | grep DBUSD
[root@eeepthought ~]# source /tmp/dbus_session_data 
[root@eeepthought ~]# env | grep DBUS
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-gZMqzhdS2S,guid=9b8b3169f14346902127832000000043
[root@eeepthought ~]# purple-remote getstatus
No existing libpurple instance detected.

보라색 - 일반 환경에서의 원격 통화:

[skaverat@eeepthought ~]$ purple-remote getstatus
available

무엇이 잘못될 수 있는지 아시나요?

답변1

DBus 세션은 다른 사용자 간에 공유될 수 없습니다. 이것이 설계된 방식입니다.

현재 솔루션을 얻지 못할 수도 있습니다. 루트를 사용하여 이 작업을 수행하려는 이유는 무엇입니까?

그렇다면 su - USERNAME -c /path/to/this/script.sh다음과 같은 시작 스크립트를 사용하십시오.

#!/bin/bash
. ~/.dbus/session-bus/*
purple-remote getstatus

이는 루트 사용자에게 적용됩니다.

추신: pidgin을 통해 로그인한 사용자에게 cron을 설정하지 않는 이유는 무엇입니까?

답변2

내가 아는 한, 다른 사용자의 D-Bus 세션에 연결할 수 없습니다. 따라서 root@eeepthought는 다른 사용자로서 skaverat@eeepthought의 D-Bus 세션에 대한 연결이 거부됩니다. 그게 당신이 하고 있는 일의 전부입니다.

관련 정보