notify-send para outro usuário no mesmo sistema

11

É possível usar o comando notify-send para enviar mensagens para outros usuários no sistema?
preferencialmente para um usuário especificado, mas em todo o sistema funcionaria também.

Ubuntu / Debian com libnotify instalado

    
por madmaze 03.10.2011 / 21:51

4 respostas

5

Se você tiver a senha de outros usuários, poderá fazer sudo -u somedude notify-send Hello . algum dia deve ter uma sessão X iniciada.

Editar: Encontrei este script para uso com o cron:

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin
export DISPLAY=:0.0
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -session)/environ )
TIME=$1
shift
/usr/bin/notify-send -t 36000 $1 $2
    
por 03.10.2011 / 22:23
2

Se os usuários estiverem nos terminais, os seguintes comandos serão úteis -

write user [tty]

ou para enviar para todos os usuários

wall
    
por 03.10.2011 / 23:39
1

Eu tropecei no seguinte projeto que implementa um usuário: tinynotify-send

    
por 07.05.2013 / 17:07
0

Eu precisava de uma ferramenta semelhante para enviar notificações a todas as sessões. Aqui está a minha solução: link

Faz a varredura / proc para encontrar todos os busses de sessão e, em seguida, executa o comando notificar-enviar em cada um deles (uma vez por barramento). Todos os argumentos são transmitidos inalterados para notificação de envio real.

#!/bin/bash

/bin/grep -sozZe '^DBUS_SESSION_BUS_ADDRESS=[a-zA-Z0-9:=,/-]*$' /proc/*/environ \
| /usr/bin/php -r '
        $busses = array();
        array_shift($argv);
        while($ln = fgets(STDIN)) {
                list($f, $env) = explode("
#!/bin/bash

/bin/grep -sozZe '^DBUS_SESSION_BUS_ADDRESS=[a-zA-Z0-9:=,/-]*$' /proc/*/environ \
| /usr/bin/php -r '
        $busses = array();
        array_shift($argv);
        while($ln = fgets(STDIN)) {
                list($f, $env) = explode("%pre%", $ln, 2);
                if (file_exists($f)) {
                        $user = fileowner($f);
                        $busses[$user][trim($env)] = true;
                }
        }
        foreach ($busses as $user => $user_busses) {
                foreach ($user_busses as $env => $true) {
                        if (pcntl_fork()) {
                                posix_seteuid($user);
                                $env_array = array("DBUS_SESSION_BUS_ADDRESS" => preg_replace("/^DBUS_SESSION_BUS_ADDRESS=/", "", $env));
                                pcntl_exec("/usr/bin/notify-send", $argv, $env_array);
                        }
                }
        }
' -- "$@"
", $ln, 2); if (file_exists($f)) { $user = fileowner($f); $busses[$user][trim($env)] = true; } } foreach ($busses as $user => $user_busses) { foreach ($user_busses as $env => $true) { if (pcntl_fork()) { posix_seteuid($user); $env_array = array("DBUS_SESSION_BUS_ADDRESS" => preg_replace("/^DBUS_SESSION_BUS_ADDRESS=/", "", $env)); pcntl_exec("/usr/bin/notify-send", $argv, $env_array); } } } ' -- "$@"
    
por 16.09.2015 / 16:04