उसी सिस्टम पर अन्य उपयोगकर्ता को सूचित करें


12

क्या सिस्टम पर अन्य उपयोगकर्ताओं को संदेश भेजने के लिए सूचित-भेजने का उपयोग करना संभव है?
एक निर्दिष्ट उपयोगकर्ता के लिए अधिमानतः, लेकिन सिस्टम चौड़ा भी काम करेगा।

Ubuntu / Debian के साथ libnotify स्थापित है


एक उदाहरण के लिए इस उत्तर को देखें जो Ubuntu 16.04 के साथ काम करता है, यहां तक ​​कि एक स्क्रिप्ट से भी शुरू होता है।
mivk

जवाबों:


6

यदि आपके पास अन्य उपयोगकर्ता पासवर्ड है तो आप कर सकते हैं sudo -u somedude notify-send Hello। किसी दिन एक्स-सत्र प्रारंभ होना चाहिए।

संपादित करें: क्रोन के साथ उपयोग के लिए यह स्क्रिप्ट मिली:

#!/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

थोड़े संशोधन के साथ, वह स्क्रिप्ट वह करती है जो मुझे करने की आवश्यकता है, धन्यवाद
पागल

क्या आपने पहले एक हाइफ़न को याद नहीं किया -session?
vladkras

नहीं @vladkras pgrepको X- सेशन मैनेजर यानी lxde-session, gnome-session इत्यादि की पिड मिलना माना जाता है। यह स्क्रिप्ट सबसे अच्छा क्रूड हैक है और आपके सिस्टम सेटअप पर बहुत कुछ निर्भर करता है। यह काम किया जब मैंने जवाब दिया लेकिन अब संशोधन के बिना काम नहीं करता है, 5 साल बाद।
मिके

यह मेरे लिए या तो काम नहीं करता है
vladkras

1

यदि उपयोगकर्ता टर्मिनलों पर हैं, तो निम्नलिखित कमांड उपयोग की होंगी -

write user [tty]

या सभी उपयोगकर्ताओं को भेजने के लिए

wall

1

मैं निम्नलिखित परियोजना पर ठोकर खाई है जो एक उपयोगकर्ता को सूचित करता है: tinynotify-send


0

मुझे सभी सत्रों के लिए अधिसूचना भेजने के लिए समान उपकरण की आवश्यकता थी। यहाँ मेरा समाधान है: /unix//a/230062/93227

यह सभी सत्रों को खोजने के लिए स्कैन / खरीद करता है और फिर यह प्रत्येक (एक बार प्रति बस) पर सूचना-भेजने को निष्पादित करता है। सभी तर्कों को वास्तविक सूचना-भेजने के लिए अपरिवर्तित किया जाता है।

#!/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("\0", $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);
                        }
                }
        }
' -- "$@"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.