Có thể sử dụng thông báo-gửi để gửi tin nhắn cho người dùng khác trên hệ thống không?
tốt nhất là cho một người dùng được chỉ định, nhưng toàn hệ thống sẽ hoạt động tốt.
Ubuntu / Debian được cài đặt libnotify
Có thể sử dụng thông báo-gửi để gửi tin nhắn cho người dùng khác trên hệ thống không?
tốt nhất là cho một người dùng được chỉ định, nhưng toàn hệ thống sẽ hoạt động tốt.
Ubuntu / Debian được cài đặt libnotify
Câu trả lời:
Nếu bạn có mật khẩu người dùng khác, bạn có thể làm sudo -u somedude notify-send Hello
. Một ngày nào đó phải bắt đầu một phiên X.
Chỉnh sửa: Tìm thấy tập lệnh này để sử dụng với 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
-session
?
pgrep
được coi là người quản lý phiên X, tức là lxde-session, gnome-session, v.v. Kịch bản đó là một bản hack thô sơ nhất và phụ thuộc rất nhiều vào thiết lập hệ thống của bạn. Nó hoạt động khi tôi trả lời nhưng không hoạt động mà không sửa đổi, 5 năm sau.
Tôi tình cờ thấy dự án sau đây thực hiện thông báo cho người dùng: tinynotify-send
Tôi cần công cụ tương tự để gửi thông báo cho tất cả các phiên. Đây là giải pháp của tôi: /unix//a/230062/93227
Nó quét / Proc để tìm tất cả các bus phiên và sau đó nó thực thi gửi thông báo trên mỗi cái (một lần trên mỗi xe buýt). Tất cả các đối số được chuyển không thay đổi để gửi thông báo thực sự.
#!/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);
}
}
}
' -- "$@"