Послать сообщение пользователю linux

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

Обновлено

Обновлено: 05.05.2022 Опубликовано: 31.03.2017

Подготовка

Для начала устанавливаем утилиту для отправки почты. В противном случае мы увидим ошибку mail: command not found. В Debian / Ubuntu:

Синтаксис

* в данном примере будет отправлено письмо на электронный адрес master@dmosk.ru с темой Test title и телом письма — Test text. Если при отправке возникли проблемы, можно проверить логи следующей командой:

Примеры использования командной строки для email-отправки

1. Отправка письма с вложением

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog -a /var/log/maillog2 master@dmosk.ru

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -A /var/log/maillog -A /var/log/maillog2 master@dmosk.ru

* где /var/log/maillog и /var/log/maillog2 — файлы, которые будут прикреплены к письму. Обратите внимание, что обе команды отличаются по регистру опции a и A — все зависит от версии и сборки Linux (в каких-то нужно использовать маленькую, в каких-то — большую). Также обратите внимание, что в примере для Ubuntu мы отправим 2 файла — для этого просто добавляем к команде еще одну опцию прикрепления файла.

2. Несколько получателей

* в данном примере мы отправил письмо на ящики master@dmosk.ru и shmaster@dmosk.ru.

3. Отправка с копией

4. Указать отправителя

5. Отправка через другой SMTP сервер

echo «Test text» | mail -s «Test title» -a «Smtp: smtp.mail.ru:25» -a «From: postmaster@dmosk.ru» -a «Return-path: postmaster@dmosk.ru» master@dmosk.ru

Однако, если сторонний почтовый сервер работает по шифрованному каналу и требует аутентификацию, необходимо ввести следующее:

echo «Test text» | mail -v -s «Test title» -S smtp=»smtp.dmosk.ru:587″ -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user=»master@dmosk.ru» -S smtp-auth-password=»password» -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from=postmaster@dmosk.ru master@dmosk.ru

* где smtp.dmosk.ru — сервер smtp; 587 — порт для подключения к серверу отправки; smtp-use-starttls указывает на использование шифрования через TLS; smtp-auth=login задает аутентификацию с использованием логина и пароля; smtp-auth-user и smtp-auth-password — соответственно логин и пароль; ssl-verify=ignore отключает проверку подлинности сертификата безопасности; nss-config-dir указывает на каталог с базами nss; from задает поле FROM

Mutt

При возникновении проблем, можно воспользоваться программой mutt. Сначала поставим ее. а) если используем CentOS / Red Hat:

Читайте также:  Настройка ядра ubuntu linux

Примеры использования Mutt

echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий ‘ — master@dmosk.ru

* данной командой mutt отправит письмо от postmaster@dmosk.ru. 3. Отправка через другой сервер. Для начала, открываем файл с конфигурацией Mutt:

* в данном примере мы отправим всю нашу почту через узел smtp.mail.ru, порт 25. Или при необходимости авторизации на почтовом сервере:

set smtp_url=»smtp://smtp_user@smtp.mail.ru:465″
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = yes

  • smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
  • smtp_pass — пароль для аутентификации.
  • ssl_verify_host — нужно ли проверять валидность сертификата.
  • ssl_verify_dates — нужно ли проверять дату действия сертификата.
  • ssl_starttls — нужно ли использовать STARTTLS (обычно, при подключении по порту 587).
  • ssl_force_tls — нужно ли использование SSL/TLS (обычно, при подключении по порту 465).

Теперь можно отправлять письмо:

echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий ‘ — master@dmosk.ru

Источник

Команда write в Linux

В Linux команда write создаёт линию связи между двумя авторизованными пользователями через терминал, позволяя отправлять сообщения в режиме реального времени.

Примеры использования команды write в Linux

Синтаксис

Параметр user является обязательным и представляет имя пользователя принимающей стороны. Указание ttyname необходимо в случае нескольких открытых терминалов.

Использование команды write в Linux

Предварительная подготовка

Для команды write требуются как минимум два пользователя, вошедших в систему через сеанс pts (псевдо-терминал) или tty (телетайп).

Так как у меня второго пользователя нет, то я его создаю с именем ivan :

oleg@mobile:~$ sudo su root@mobile:/home/oleg# adduser ivan Добавляется пользователь «ivan» . Добавляется новая группа «ivan» (1001) . Добавляется новый пользователь «ivan» (1001) в группу «ivan» . Создаётся домашний каталог «/home/ivan» . Копирование файлов из «/etc/skel» . Новый пароль : Повторите ввод нового пароля : passwd: пароль успешно обновлён Изменение информации о пользователе ivan Введите новое значение или нажмите ENTER для выбора значения по умолчанию Полное имя []: Номер комнаты []: Рабочий телефон []: Домашний телефон []: Другое []: Данная информация корректна? [Y/n] y root@mobile:/home/oleg# 

Добавляю пользователя ivan в группу sudo:

root@mobile:/home/oleg# usermod -aG sudo ivan root@mobile:/home/oleg# 

Проверяю доступность разрешений sudo , переключившись командой su на учётную запись пользователя ivan :

oleg@mobile:~$ sudo su ivan ivan@mobile:/home/oleg$ cd ivan@mobile:~$ 

Теперь пользователь ivan , используя sudo , сможет запускать команды с привилегиями суперпользователя:

ivan@mobile:~$ sudo ls -l /root итого 4 drwxr-xr-x 3 root root 4096 авг 17 2021 snap ivan@mobile:~$

Конечно при работе в реальной многопользовательской среде подобная предварительная подготовка не требуется.

Разрешение на запись

Для связи с другим пользователем oleg получает разрешение на запись с помощью mesg y :

oleg@mobile:~$ mesg y oleg@mobile:~$

Пользователь ivan также получает разрешение на запись:

ivan@mobile:~$ mesg y ivan@mobile:~$

Вход в терминальный сеанс

При работе на одном компьютере с двумя разными пользователями каждый пользователь запускает команду в своём терминальном сеансе и указывает своё имя пользователя.

Читайте также:  Linux доступно оперативной памяти

Команда предлагает ввести sudo и пароль пользователя для продолжения.

Пользователь oleg входит в терминальный сеанс:

oleg@mobile:~$ sudo login oleg Пароль: Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-58-generic x86_64) . oleg@mobile:~$ 

То же самое выполняет и пользователь ivan :

ivan@mobile:~$ sudo login ivan Пароль: . ivan@mobile:~$ 

Чтобы проверить, кто вошёл в систему, используется команда w в любом терминале:

oleg@mobile:~$ w 17:51:14 up 14 min, 3 users, load average: 0,28, 0,39, 0,50 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT oleg :0 :0 17:38 ?xdm? 1:33 0.00s /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_M oleg pts/0 - 17:47 1.00s 0.12s 0.00s w ivan pts/2 - 17:49 2:05 0.14s 0.05s -bash oleg@mobile:~$ 

Вывод показывает, что пользователи oleg и ivan вошли в систему через консоль pts . Кроме этого пользователь oleg предварительно вошёл в систему через локальный дисплей (GUI). Он же выполнил команду login для обоих пользователей.

Создание сообщения

Чтобы написать сообщение другому пользователю с помощью команды write выполняются следующие действия:

Запускаем утилиту и указываем пользователя:

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

ivan@mobile:~$ Message from oleg@mobile on pts/0 at 17:56 . 

Пользователь oleg набирает текст сообщения и нажимает Enter для перехода на новую строку:

oleg@mobile:~$ Message from oleg@mobile on pts/0 at 18:03 . write oleg Hi, how are you? write ivan Would you like to drink some beer now?

Сообщение появляется на принимающей стороне в режиме реального времени и пользователь ivan отвечает:

ivan@mobile:~$ Message from oleg@mobile on pts/0 at 18:03 . write oleg Hi, how are you? write ivan Would you like to drink some beer? write oleg Yes, of course. o 

Пользователь oleg завершает работу, набрав oo и нажав CTRL + D:

oleg@mobile:~$ write ivan Message from ivan@mobile on pts/2 at 18:03 . Hi, how are you? write ivan Would you like to drink some beer now? write oleg Yes, of course. o write oo oleg@mobile:~$ 

Пользователь ivan получает сообщение об окончании сеанса и бежит к Олегу:

ivan@mobile:~$ EOF Message from oleg@mobile on pts/0 at 18:03 . write oleg Hi, how are you? write ivan Would you like to drink some beer now? write oleg Yes, of course. o write oo EOF

Поскольку не существует надлежащего способа отличить, когда пользователь заканчивает сообщение, традиционный способ завершения оператора — это символ o . Чтобы сигнализировать об окончании разговора, напишите oo . Завершите работу, нажатием CTRL + D.

Сообщение с помощью команды echo

С использованием команды echo можно ввести сообщение и передать команду write :

oleg@mobile:~$ echo "Hello from oleg" | write ivan

Канал связи немедленно заканчивается для отправителя, а получатель принимает сообщение и ожидает завершения.

Читайте также:  Cut in linux command line

Сообщение из файла

Для отправки сообщения из текстового файла создаётся текстовый файл:

Содержимое файла отправляется с помощью команды следующим образом:

oleg@mobile:~$ echo "Hello from oleg" | write ivan < beer.txt

Сообщение на определённый терминал

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

Используйте эту утилиту для проверки имени tty и времени простоя.

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

ivan@mobile:~$ write oleg pts/0

Сообщения поступят только на pts/0 .

Заключение

Изучив в этой небольшой статье примеры использования команду write в Linux вы сможете использовать её в своей работе. Вы уже убедились в том, что это несложно.

Источник

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

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

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

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

18:07:26 up 38 days, 6:22, 2 users, load average: 1.22, 1.24, 1.25 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT captain pts/0 159.224.217.24 17:46 1.00s 0.45s 0.00s w captain pts/1 159.224.217.24 17:58 7:05 0.11s 0.11s bash -l

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

captain pts/0 2017-11-18 17:46 00:05 143820 (159.224.217.24) captain pts/1 2017-11-18 17:58 . 145964 (159.224.217.24)

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

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

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

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

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

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

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

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

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

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

$ cat send_to_user.txt | write captain pts/1

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

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

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

$ wall I will reboot this server at 02:00!

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

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

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

$ cat send_to_user.txt | wall

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

Источник

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