একই সিস্টেমে অন্য ব্যবহারকারীকে অবহিত-পাঠান send


12

সিস্টেমের অন্যান্য ব্যবহারকারীর কাছে বার্তা প্রেরণের জন্য কী বিজ্ঞপ্তি-প্রেরণ ব্যবহার করা সম্ভব?
সাধারণত একটি নির্দিষ্ট ব্যবহারকারীর পক্ষে, তবে সিস্টেমের প্রশস্ততা পাশাপাশি কাজ করবে।

উবুন্টু / ডেবিয়ান লিবনোটাইফাই ইনস্টল করা আছে


দেখুন এই উত্তরটি একটি উদাহরণ যে উবুন্টু 16,04 সাথে কাজ করে, একটি স্ক্রিপ্ট নিম্নলিখিতরূপে crontab পরিবর্তন শিকড় দ্বারা শুরু থেকে জন্য।
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

সামান্য সংশোধন করে, সেই স্ক্রিপ্টটি আমার যা করা দরকার তা করে, ধন্যবাদ
5:48

আপনি একটি হাইফেন আগে মিস করেনি -session?
ভ্লাদক্রাস

@ ভ্লাদক্রাস pgrepএক্স-সেশন ম্যানেজার, অর্থাৎ lxde- সেশন, জিনোম-সেশন ইত্যাদির পিড পাবে বলে মনে করা হচ্ছে না That এই স্ক্রিপ্টটি সর্বোত্তমভাবে একটি অশোধিত হ্যাক এবং এটি আপনার সিস্টেম সেটআপের উপর অনেক নির্ভর করে। আমি যখন উত্তর দিয়েছিলাম তখন এটি কাজ করেছিল তবে 5 বছর পরে এখন পরিবর্তন ছাড়া কাজ করে না।
micke

এটি আমার পক্ষে কাজ করে না
ভ্লাদক্রাস

1

যদি ব্যবহারকারীরা টার্মিনালগুলিতে থাকে তবে নিম্নলিখিত কমান্ডগুলি কার্যকর হবে -

write user [tty]

বা সমস্ত ব্যবহারকারীকে প্রেরণ

wall


0

সমস্ত সেশনে বিজ্ঞপ্তি প্রেরণের জন্য আমার অনুরূপ সরঞ্জামের প্রয়োজন ছিল। এখানে আমার সমাধান: /unix//a/230062/93227

এটি সমস্ত সেশন বাসগুলি সন্ধান / স্ক্যান করে এবং তারপরে এটি প্রতিটিটির জন্য বিজ্ঞপ্তি-প্রেরণ কার্যকর করে (একবার প্রতি বাসে)। সমস্ত আর্গুমেন্ট বাস্তব বিজ্ঞপ্তি-প্রেরণে অপরিবর্তিত পাস করা হয় passed

#!/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);
                        }
                }
        }
' -- "$@"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.