Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Debian KDE (http://www.linux-archive.org/debian-kde/)
-   -   Sending session DBus message from system cron job? (http://www.linux-archive.org/debian-kde/338674-sending-session-dbus-message-system-cron-job.html)

Michael Schuerig 03-09-2010 03:49 PM

Sending session DBus message from system cron job?
 
I'd like to disable the desktop search indexer while the cron-triggered
backup is running. I've figured out the relevant DBus messages I need
for that:

qdbus org.kde.nepomuk.services.nepomukstrigiservice
/nepomukstrigiservice isSuspended

qdbus org.kde.nepomuk.services.nepomukstrigiservice
/nepomukstrigiservice suspend

qdbus org.kde.nepomuk.services.nepomukstrigiservice
/nepomukstrigiservice resume

I'm still looking for an elegant way to find all running sessions.
Currently, the best I can think of looks something like this

. /usr/share/acpi-support/power-funcs

CMD=one of the above

for x in /tmp/.X11-unix/* ; do
displaynum=`echo $x | sed s,/tmp/.X11-unix/X,,`
getXuser
if [ x"$XUSER" != x"" ] ; then
su -c "$CMD" $XUSER
fi
done

Well, it works, but it sure isn't elegant.

Michael

--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/


--
To UNSUBSCRIBE, email to debian-kde-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 201003091749.18943.michael@schuerig.de">http://lists.debian.org/201003091749.18943.michael@schuerig.de

Glennie Vignarajah 03-10-2010 11:06 AM

Sending session DBus message from system cron job?
 
Le 09/03/2010 vers 17:49, dans le message intitulé "Sending session DBus
message from system cron job?", Michael Schuerig(Michael Schuerig
<michael@schuerig.de>) a écrit:



Hello,


> I'd like to disable the desktop search indexer while the cron-triggered
> backup is running. I've figured out the relevant DBus messages I need
> for that:

I use this code:

-------------
for _PID in $(pgrep -u $USER startkde) ; do
_ID="$(cat /proc/$_PID/environ | tr '' '
' |awk -
FDBUS_SESSION_BUS_ADDRESS= '/DBUS_SESSION_BUS_ADDRESS=/ {print $2}')"
_DBUS_BUS_ADDRESS="$_ID $_DBUS_BUS_ADDRESS"
done
---------------
In order to find DBUS sockets, and then

---------------
for _BUS_ID in $_DBUS_BUS_ADDRESS ; do
DBUS_SESSION_BUS_ADDRESS=$_BUS_ID dbus-send --type=method_call --
dest=org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.Lock
done

---------------
in order to lock all my kde sessions.

I don't if this is better, with this methode, there is no need to "su" and
you're immune to stalled sockets in /tmp/.X11-unix/.

HTP,


--
http://www.glennie.fr
If the only tool you have is hammer, you tend to see every problem as a nail.


--
To UNSUBSCRIBE, email to debian-kde-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 201003101306.50165.glennie@glennie.fr">http://lists.debian.org/201003101306.50165.glennie@glennie.fr

Michael Schuerig 03-10-2010 01:05 PM

Sending session DBus message from system cron job?
 
On Wednesday 10 March 2010, Glennie Vignarajah wrote:
> Le 09/03/2010 vers 17:49, dans le message intitulé "Sending session
> DBus message from system cron job?", Michael Schuerig(Michael
> Schuerig <michael@schuerig.de>) a écrit:
>
>
>
> Hello,
>
> > I'd like to disable the desktop search indexer while the
> > cron-triggered backup is running. I've figured out the relevant
> > DBus messages I need
>
> > for that:
> I use this code:
[snip]

Thanks! Yes, that's better.

Michael

--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/


--
To UNSUBSCRIBE, email to debian-kde-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 201003101505.38120.michael@schuerig.de">http://lists.debian.org/201003101505.38120.michael@schuerig.de

Michael Schuerig 03-21-2010 07:56 AM

Sending session DBus message from system cron job?
 
On Wednesday 10 March 2010, Glennie Vignarajah wrote:
> Le 09/03/2010 vers 17:49, dans le message intitulé "Sending session

> I use this code:
>
> -------------
> for _PID in $(pgrep -u $USER startkde) ; do
> _ID="$(cat /proc/$_PID/environ | tr '' '
' |awk -
> FDBUS_SESSION_BUS_ADDRESS= '/DBUS_SESSION_BUS_ADDRESS=/ {print $2}')"
> _DBUS_BUS_ADDRESS="$_ID $_DBUS_BUS_ADDRESS"
> done
> ---------------
> In order to find DBUS sockets, and then
>
> ---------------
> for _BUS_ID in $_DBUS_BUS_ADDRESS ; do
> DBUS_SESSION_BUS_ADDRESS=$_BUS_ID dbus-send --type=method_call --
> dest=org.kde.screensaver /ScreenSaver
> org.freedesktop.ScreenSaver.Lock done

I'm by now using this method to send a message from a (system) cron job
and unfortunately it does not work as I hoped. I've changed

pgrep -u $USER startkde

to

pgrep startkde

as I want to stop all nepomuk indexers during a backup. However, I get
an error message in the output from the cron job, implying that the
message could not be sent, and indeed, the indexer is not disabled. This
is the message:

Failed to open connection to "session" message bus: Did not receive a
reply. Possible causes include: the remote application did not send a
reply, the message bus security policy blocked the reply, the reply
timeout expired, or the network connection was broken.

Is there a way to work around this?

Michael

--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/


--
To UNSUBSCRIBE, email to debian-kde-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 201003210956.22091.michael@schuerig.de">http://lists.debian.org/201003210956.22091.michael@schuerig.de

Glennie Vignarajah 03-21-2010 12:52 PM

Sending session DBus message from system cron job?
 
Le 21/03/2010 vers 09:56, dans le message intitulé "Re: Sending session DBus
message from system cron job?", Michael Schuerig(Michael Schuerig
<michael@schuerig.de>) a écrit:

> On Wednesday 10 March 2010, Glennie Vignarajah wrote:
> > Le 09/03/2010 vers 17:49, dans le message intitulé "Sending session


Hello,



> Failed to open connection to "session" message bus: Did not receive a
> reply. Possible causes include: the remote application did not send a
> reply, the message bus security policy blocked the reply, the reply
> timeout expired, or the network connection was broken.


It's seems that session bus needs a DISPLAY.
Use the DISPLAY variable associated with DBUS_SESSION_BUS_ADDRESS
Have a look at http://cweiske.de/tagebuch/DBus notify-send over network.htm

Regards,
--
http://www.glennie.fr
If the only tool you have is hammer, you tend to see every problem as a nail.


--
To UNSUBSCRIBE, email to debian-kde-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 201003211452.34159.glennie@glennie.fr">http://lists.debian.org/201003211452.34159.glennie@glennie.fr

Michael Schuerig 03-21-2010 01:42 PM

Sending session DBus message from system cron job?
 
On Sunday 21 March 2010, Glennie Vignarajah wrote:
> Le 21/03/2010 vers 09:56, dans le message intitulé "Re: Sending
> session DBus message from system cron job?", Michael
> Schuerig(Michael Schuerig
>
> <michael@schuerig.de>) a écrit:
> > On Wednesday 10 March 2010, Glennie Vignarajah wrote:
> > > Le 09/03/2010 vers 17:49, dans le message intitulé "Sending
> > > session
>
> Hello,
>
> > Failed to open connection to "session" message bus: Did not receive
> > a reply. Possible causes include: the remote application did not
> > send a reply, the message bus security policy blocked the reply,
> > the reply timeout expired, or the network connection was broken.
>
> It's seems that session bus needs a DISPLAY.
> Use the DISPLAY variable associated with DBUS_SESSION_BUS_ADDRESS
> Have a look at http://cweiske.de/tagebuch/DBus notify-send over
> network.htm

I didn't get it to work with DISPLAY and XAUTHORITY either, so I
reverted to my rough method

NEPOMUK="org.kde.nepomuk.services.nepomukstrigiser vice"
SUSPEND="/nepomukstrigiservice org.kde.nepomuk.Strigi.suspend"
RESUME="/nepomukstrigiservice org.kde.nepomuk.Strigi.resume"

case "$1" in
on|resume)
CMD="$RESUME"
;;
off|suspend)
CMD="$SUSPEND"
;;
*)
echo "Usage: $0 {on|off}"
exit 1
;;
esac

. /usr/share/acpi-support/power-funcs

for x in /tmp/.X11-unix/* ; do
displaynum=`echo $x | sed s,/tmp/.X11-unix/X,,`
getXuser
if [ x"$XUSER" != x"" ] ; then
sudo -u $XUSER dbus-send --session --type=method_call --
dest=$NEPOMUK $CMD
fi
done


I'm using sudo instead of su because, on my system, su triggers an
unecessary password prompt from libpam_mount.

Michael

--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/


--
To UNSUBSCRIBE, email to debian-kde-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 201003211542.26034.michael@schuerig.de">http://lists.debian.org/201003211542.26034.michael@schuerig.de


All times are GMT. The time now is 07:56 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.