Question

J'utilise l'accès DBUS approfondie de certains processus. Le problème est qu'il fonctionne d'un autre utilisateur et session de DBUS est différent pour eux. Donc, je demande ne peux plus accéder qui utilise DBUS par un autre processus si les sessions sont différentes. J'ai trouvé le moyen de résoudre ce trouble: quelques écritures de script dans les données de session de dbus de fichiers de l'utilisateur principal (je l'ai mis à la charge du système). Voici ce script:

#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus

Voici un exemple de ce fichier:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS

Maintenant, je viens d'exécuter les données de ce fichier et les deux sessions de DBUS seront identiques. Voici quelques problèmes:

#!/bin/bash
if [ -f /.Xdbus ]
then
    source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
    echo "File doesnt exist"
fi

Comme vous pouvez le voir, j'utilise pidgin comme application DBUS. Mais il jette l'erreur, qu'il n'y a pas d'application de pourpre, de sorte que les séances de DBUS sont différentes! Alors COMAND:

source /.Xdbus

ne fonctionne pas. Pourquoi?


UPD

source /.Xdbus; echo $DBUS_SESSION_BUS_ADDRESS; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"; echo $DBUS_SESSION_BUS_ADDRESS;

?

unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023 No existing libpurple instance detected. unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
Était-ce utile?

La solution

Sur la base de votre mise à jour, la commande source fonctionne. Le problème est donc avec purple-remote ou libpurple ou une dépendance plutôt que votre script Bash.

Il est pas une bonne idée de créer ces fichiers dans le répertoire racine. Essayez de choisir un endroit plus approprié pour votre fichier. L'un des éléments suivants peut-être:

  • /home/username/.Xdbus
  • /var/local/.Xdbus - vous pourriez avoir à ajouter votre utilisateur au groupe qui possède ce répertoire
  • /tmp/.Xdbus

Autres conseils

Je pense qu'il est parce que vous utilisez / ce qui est la racine du système de fichiers. Qu'est-ce que vous voulez est un chemin ou ./ absolu comme dit Dennis.

Vous pouvez également utiliser $ PWD / fichier ou {$ PWD} / fichier

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top