- Отправлять сообщения между терминалами и / или пользователями, подключенными по SSH
- Команда wall в Linux
- Передача сообщения
- Трансляция сообщения из файла
- Передача сообщения группе
- Выводы
- Отправить сообщение другому пользователю на сервере в Unix/Linux
- Отправить сообщение другому пользователю на сервере в Unix/Linux
- -=== СПОСОБ 1 — Используем echo команду ==-
- -=== СПОСОБ 2 — Используем write команду ==-
- -=== СПОСОБ 3 — Используем wall команду ==-
Отправлять сообщения между терминалами и / или пользователями, подключенными по SSH
В какой-то другой день мне нужно было отправить сообщение, уведомление или уведомление пользователям, которые подключены, например, к серверу через SSH; предупреждение, что сервер перезагрузится через 5 минут . или что-то в этом роде.
В тот момент я оказался перед дилеммой, как сразу же сообщить им об этом? . по электронной почте это займет время, и это зависит от каждого из пользователей, читающих электронную почту, с помощью мгновенных сообщений (IM) это невозможно, потому что не все всегда в сети, в любом случае . большая проблема
И однажды пришло решение . команда стена
echo «El servidor será reiniciado en los próximos 5mins, guarden sus trabajos.» | wall
И готово! … Это отправит это сообщение ВСЕМ пользователям, которые подключены к серверу через SSH, но… не только это. Предполагая, что это компьютер, а не сервер (то есть у него есть графическая среда), мы также увидим сообщение в открытом терминале, а также в области уведомлений:
Но . Что делать, если я хочу отправить сообщение только на один терминал или сеанс SSH?
В этом случае мы должны знать, с каким сеансом мы хотим общаться. Для этого мы используем то, что предлагает нам та же система.
1. Сначала мы должны знать, на какой терминал мы хотим отправить сообщение, для этого мы пишем в терминале: w (да . просто буква ш). Появится следующее, и с этой информацией мы увидим, с каким терминалом мы хотим связаться:
В этом примере я хочу отправить сообщение телетайп2 (первая, которую они видят).
2. Теперь переходим к команде:
echo «Esto es un mensaje de prueba» > /dev/tty2
И этого будет достаточно для достижения того, что мы хотим, этот текст появится на TTY2.
Если вместо того, чтобы отправлять его туда, мы хотим отправить его в pts / 2… просто:
echo «Esto es un mensaje de prueba» > /dev/pts/2
Надеюсь, это кому-то полезно, я понял, что часто публикую несколько конкретных советов, которые помогают не многим, а немногим . но эй, это не имеет значения, если это только для некоторых, если кому-то это интересно то, чем я хочу поделиться, буду делать и дальше 😀
Приветствую и действительно спасибо, что прочитали меня.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Из Linux » Сети / Серверы » Отправлять сообщения между терминалами и / или пользователями, подключенными по SSH
Команда wall в Linux
wall — это утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей. Сообщения можно вводить либо на терминале, либо в содержимом файла. wall означает запись всех, чтобы отправить сообщение только определенному пользователю, используйте команду write .
Обычно системные администраторы отправляют сообщения об обслуживании и просят пользователей выйти из системы и закрыть все открытые программы. Сообщения отображаются для всех вошедших в систему пользователей с открытым терминалом. Пользователи, использующие графическую среду рабочего стола без открытого терминала, не увидят сообщения. Каждый пользователь может управлять доступом на запись к своему терминалу с помощью утилиты mesg . Когда суперпользователь вызывает wall команду, все пользователи будут получать сообщения, независимо от их mesg настройки.
Передача сообщения
Синтаксис команды wall следующий:
Если файл не указан, wall читает сообщение со стандартного ввода.
Самый простой способ передать сообщение — вызвать команду wall с сообщением в качестве аргумента:
wall "The system will be restarted in 10 minutes."
Broadcast message from [email protected] (pts/0) (Sun Oct 4 19:22:07 2020): The system will be restarted in 10 minutes.
Сообщение будет передано всем пользователям, которые в данный момент вошли в систему.
Чтобы подавить баннер и отображать только —nobanner вами текст для вошедших в систему пользователей, вызовите команду с параметром -n ( —nobanner ):
wall -n "The system will be restarted in 10 minutes."
The system will be restarted in 10 minutes.
Если вы хотите писать многострочные сообщения, вызывайте команду без аргумента:
Команда wall будет ждать, пока вы введете текст. Когда вы закончите вводить сообщение, нажмите Ctrl+D чтобы завершить программу и передать сообщение.
Вы также можете использовать перенаправление здесь-строки или перенаправить вывод другой команды на wall . Вот пример, показывающий, как использовать команду echo для трансляции многострочных сообщений:
echo "The system will be restarted in 10 minutes. nPlease save your work." | wall
Трансляция сообщения из файла
Если вы регулярно отправляете одни и те же сообщения, вы можете записать каждое из них в файл, чтобы вам не приходилось повторно набирать один и тот же текст. wall читает из файла только при вызове root.
Чтобы транслировать содержимое файла, вызовите команду wall за которой следует имя файла:
The system will be restarted in 10 minutes.
Broadcast message from [email protected] (pts/0) (Sun Oct 4 19:25:06 2020): The system will be restarted in 10 minutes.
Передача сообщения группе
Чтобы отправить сообщение только членам данной группы, запустите команду с параметром -g ( —group ), за которым следует имя группы. Например, чтобы писать только на терминалах членов группы «devs», вы должны запустить:
wall -g devs "The system will be restarted in 10 minutes."
Группа также может быть указана по ее GID (идентификатору группы).
Выводы
Команда wall записывает сообщение на терминалы всех пользователей, вошедших в систему.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Отправить сообщение другому пользователю на сервере в 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» завершена.