Linux послать сообщение другому пользователю

Подскажите простейший способ отправить уведомление «графическим» пользователям.

Есть самописный демом, который мониторит некоторые события и при их возникновении нужно отправить уведомление пользователям.

На компьютере, в общем случае, запущено несколько сеансов в том числе по ssh.

Нужно что бы все пользователи получили уведомление о событии, независимо от того каким образом они вошли в систему. Для консольных пользователей это сделать не сложно.

Вопрос как это попроще сделать для графических пользователей, в виде всплывающего окна и независимо от используемой оболочки.

Желательно что бы любой пользователь мог «закрыть» событие так что бы окошко уведомления закрылось у всех прочих пользователей.

Поищи про notifyd, думаю, это то, что нужно. А если хочешь в C — то про libnotify.

Послать сообщение можно через write, «графические» пользователи тоже его получат.

«закрыть» событие так что бы окошко уведомления закрылось у всех прочих пользователей

А вот такое придётся писать самому, про стандартное ничего не слышал.

«графические» пользователи тоже его получат.

Не получат, специально только что проверил.

В продолжение к предыдущему. Ты хоть тонну сообщений посылай, если у юзера не запущен нотификатор (у меня, например, не запущен), то ничего он не получит! Разве что если сидит по ssh или в консольке — получит сообщения, посланные wall/write.

А зачем отключать демон уведомлений? ССЗБ? Тогда надо по-другому ставить вопрос: «Как отправить сообщение горе-пользователю, который заблокировал все способы получения сообщений?»

Что значит «зачем отключать»? Чтобы что-то отключить, надо его сначала включить. А я и не включал. Раньше пользовался notipy, но он уж слишком глюкавый.

Вопрос как это попроще сделать для графических пользователей, в виде всплывающего окна и независимо от используемой оболочки.

Можно использовать xmessage, gxmessage

Желательно что бы любой пользователь мог «закрыть» событие так что бы окошко уведомления закрылось у всех прочих пользователей.

Тогда надо какие-то костыли городить, которые б убивали эти всплывающие окошки от xmessage или gxmessage. KDialog еще есть например

To show GUI notifications:

  • notification server (most of desktop environments use their own implementations)
  • libnotify (Arch Linux, Fedora, openSUSE) or libnotify-bin (Debian GNU/Linux, Ubuntu)

Все полноценные ДЕ (гном мате кеды крыса циннамон) имееют включенный сервер уведомлений.

Проблема в том, что рутовый демон не может отправлять сообщения юзерам напямую. — Потребуется запускать уведомление от того же юзера и с перемеными DISPLAY и другими.

Решение — костыль: https://github.com/hakavlad/notify-send-root-wrapper — он сканирует /proc, находит залогиненных юзеров, находит нужные переменные, и отправляет уведомление всем залогиненным.

  • скрипт всасывает аргументы и передает в notify-send для уведомления всех.
Читайте также:  Чем редактировать pdf файлы mac os

nohang для уведомления залогиненных использует аналогичный подход, только вместо отдельного процесса запускает тред в себе.

notify-send-root-wrapper писался давно и может быть не идеален. Попробуй. Есть вопросы или проблемы — пиши в issue в https://github.com/hakavlad/notify-send-root-wrapper

Нужно что бы все пользователи получили уведомление о событии

если они сами выключили нотификатор, то не нужно

Источник

Отправка почты из командной строки (консоли) Linux

В данной статье мы рассмотрим основные утилиты для отправки электронных писем по SMTP из консоли Linux – mail/mailx/mutt. Данная инструкция применима ко всем современным дистрибутивам Linux.

Для отправки почты из командной строки Linux вам нужно установить Mail User Agent, которые умеет подключаться к smtp серверам для отправки и получения почты.

В первую очередь рассмотрим утилиту mail (mailx). Для ее установки, выполните:

  • Для Debian/Ubuntu: # sudo apt-get install mailutils
  • Для CentOS/Redhat установите пакет с помощью yum (dnf) # dnf install mailx

Mailx содержит в себе несколько утилит для работы с почтой, мы же подробно остановимся на mail.

# yum install sendmail –y

Основные опции при отправке писем:

    -s — Subject:

Чтобы отправить простое сообщение из консоли Linux, воспользуйтесь командой:

# echo «Это тестовое письмо» | mail -s «Проверка отправки почты» admin@build-centos.ru

Проверьте, что письмо доставлено в ящик.

Если вам нужно посмотреть подробные логи отправки писем по SMTP, их можно посмотреть в файле:

Без указания дополнительных опций письмо отправляется с дефолтного почтового ящика и скорее всего будет помечено как спам в большинстве популярных почтовых сервисах.

Чтобы указать другого отправителя письма (mail from), используйте ключ -r:

# echo «Это тестовое письмо 2» | mail -s «Проверка отправки почты 2» -r admin@build-centos.ru test@build-centos.ru

Если нужно отправить письмо нескольким получателям, перечислите их через запятую:

# echo «Это тестовое письмо 3» | mail -s «Проверка отправки почты 3» -r admin@build-centos.ru test@build-centos.ru, test-2@build-centos.ru

Как видите, письмо было отправлено двум получателям. А с помощью ключа -c вы можете отправить копию письма на указанный ящик:

# echo «Это тестовое письмо 4» | mail -s «Проверка отправки почты 4» -r admin@build-centos.ru -c test@build-centos.ru

Если вам нужно прикрепить к письму файл, укажите путь к файлу в параметре –a.

# echo «Файл во вложении» | mail -s «Проверка вложения» -a /root/test.txt -r admin@build-centos.ru test@build-centos.ru

В указанных почтовый ящик должно прийти письмо с вложением. Если нужно отпрравить два или более файлов, добавьте каждый файл через собственный атрибут –a:

# echo «Вложены 2 файла » | mail -s «Вложение нескольких файлов » -a /root/test.txt -a /root/message.log -r admin@build-centos.ru test@build-centos.ru

Вы можете отправить письмо через конкретный SMTP сервер. Его имя и порт подключения указываются в параметре -S smtp= :

# echo «Messages smtp server» | mail -s «Test smtp server» -S smtp=»build-centos.ru:25″ -r admin@build-centos.ru admin@build-centos.ru

Читайте также:  Take ownership для windows 10

Если удаленный SMTP сервер требует авторизации перед отправкой, вы можете указать имя пользователя и пароль с помощью параметров -S smtp-auth-user и -S smtp-auth-password.

# echo «Test auth mailbox» | mail -v -s «Test auth» -S smtp=»build-centos.ru:25″ -S smtp-auth=login -S smtp-auth-user=»admin@build-centos.ru» -S smtp-auth-password=»password» -S from=admin@build-centos.ru admin@build-centos.ru

При запуске этой команды перед вами появятся список SMTP команд для подключения, авторизации и отправки почты.

Если для отправки нужно использовать TLS шифрование и игнорировать проверку подлинности сертификата сервера, добавьте параметры:

-S smtp-use-starttls
-S ssl-verify=ignore

/.mailrc. Например, добавьте в этот файл такие строки:

Теперь для отправки письма через релей Gmail с аутентификацией достаточно выполнить команду:

$ echo «Test mail » | mail -v -s «Testing gmail auth» admin@build-centos.ru

Вы можете использовать команду отправки почты для в своих bash скриптом. Например, создайте следующий скрипт, которые будет отправлять вам информацию по свободному месту на дисках:

Добавьте этот скрипт в планировщик cron и вы будете регулярно получать письма с информацией о свободном месте на вашем сервере.

Еще одна популярная утилита для отправки почты в Linux это mutt:

# sudo apt-get install mutt — для Debian/Ubuntu

# yum install mutt -y — для CentOS/Redhat

Синтаксис mutt такой же, как и у mail/ mailx:

# echo «Text messages mutt» | mutt -s «Test mutt» admin@build-centos.ru

Таким образом, вы можете легко отправлять письма из командной строки, встраивать отправку email оповещений в свои bash скрипты или ватчдоги (удобно для контроля их выполнения).

Источник

Отправить сообщение другому пользователю на сервере в Unix/Linux

Так бывает, что на сервере работают и другие пользователи одновременно с вами. Допустим вам, необходимо выполнить перезагрузку ОС так,чтобы другие юзеры не пострадали и успели сохранить свои данные до ребута. Сейчас я расскажу как можно это сделать несколькими способами.

Для начала, посмотрим кто находится в системе:

Так же, можно использовать:

Для примера, я залогинился на сервер дважды от одного и того же юзера.

-=== СПОСОБ 1 — Используем echo команду ==-

Можно отправить сообщение другому пользователю следующим образом:

  • echo -e «33[0;31m Can I reboot this server… OK? 33[0m» — Команда.
  • /dev/pts/1 — Это открытая сессия пользователя.

PS: Я использую в данном примере подсветку, чтобы можно было сразу ее увидеть и другому пользователю все было понятно.

-=== СПОСОБ 2 — Используем write команду ==-

Так же, можно использовать следующий пример:

  • captain — Юзер которому нужно отправить сообщение.
  • pts/1 — Сессия данного юзера.

Напишите сообщение и отправьте его через нажатие ‘Enter’, и оно будет отправлено в терминал юзера. Используйте Ctrl+D чтобы прервать утилиту write.

Можно написать сообщение в файл (предположим — send_to_user.txt):

И потом, чтобы отправить данное послание, используйте:

Очень простая и полезная тулза.

-=== СПОСОБ 3 — Используем wall команду ==-

Для отправки широковещательного сообщения всем подключенным пользователям, используется команда wall (wall = write to all):

Читайте также:  Windows 10 поиск файла по времени

Но данное сообщение будет отправлено только после того, как вы нажмете — Ctrl+D

Можно написать сообщение в файл (предположим — send_to_user.txt):

И потом, чтобы отправить данное послание, используйте:

Вот и все, статья «Отправить сообщение другому пользователю в Unix/Linux» завершена.

Источник

linux-notes.org

Команды /Mail/mailx используемые в операционных систем UNIX/Linux для отправки электронной почты (так же, для полученные и чтения сообщений электронной почты) с возможностью удалять. В своей статье «Команды mail/mailx в примера на Unix/Linux» я расскажу как установить и использовать утилиту (команду) mail на ОС Unix или Linux.

Синтаксис команды mail:

Опции.

-v : Подробный режим. Детали отправки отображаются на экране.
-s : Опция задает тему для письма.
-c : Отправить СС (копии для других пользователей).
-b :Отправить BС (копии для других пользователей).
-f : Прочитать содержимое почтового ящика.
-e : Проверка на наличие почты в почтовом ящике.
-F : Записывает сообщение в файл с именем после получения.
-r : Опция для указания адреса отправителя в настройках отправки почты.
-u : Определяет сокращенния, аналог опции «mail -f /var/spool/mail/UserID».

Установка утилиты mail в Unix/Linux

Для того чтобы установить утилиту mail на CentOS/Fedora/RedHat, используйте:

Для того чтобы установить утилиту mail на Debian/Mint, используйте:

Теперь вы должны иметь команду mail, и можно приступать к работе.

Команды mail/mailx в примера на Unix/Linux

В своей статье «Команды mail/mailx в примера на Unix/Linux» я расскажу как пользоваться утилитой mail в ОС Unix/Linux. Приведу наглядные примеры использования данной утилиты.

Чтобы запустить программу «mail» и вывести список сообщений в почтовом ящике, выполните:

Команда mail показывает количество сообщений в ящике системы. Затем почтовая система отображает подсказку почтового ящика (?), ожидая ввода.

Когда вы видите эту строку, то нужно ввести субкоманду, чтобы увидеть список подкоманд, нужно нажать (?):

Данная команда (?) покажет все субкоманды для Mail.

Отправка электронной почты пользователю:

В команде «echo» задается некоторый текст для отправки по электронной почте.

Опция «-s» используется для указания темы для письма. Собственно, команда mail отправит емейл пользователю send_to_some@email.com. Можно обойтись и без команды echo, тогда команда будет выглядеть следующим образом:

В этом примере вы тогда, будите вводить в сообщении и чтобы остановить просто введите точку следующим образом (.):

Если вы хотите отправить письмо нескольким пользователям, то просто добавить емейл через пробел. Это будет выглядеть следующим образом:

Отправка содержимого текстового файла

3 thoughts on “ Команды mail/mailx в примера на Unix/Linux ”

Не подскажете, как настроить на свой почтовый адрес?

Установить и настроить свой почтовый сервер. Какой взять, — это на любителя. Я предпочитаю — postfix + dovecot. Настройку данной связки я опубликовывал тут: http://linux-notes.org/ustanovka-pochtovogo-servera-postfix-dovecot-i-squirrelmail-v-centos-redhat-fedora/

Если у меня все письма в первый экран не влазят, как увидеть следующую страницу списка?

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Оцените статью