Broadcast message from linux

How to Send a Message to Logged Users in Linux Terminal

How can I send a messages to logged on users in a Linux server? If you are asking this question, then this guide will help you learn how to do that. We will demonstrate how to send a message to all or a specific logged on user, on the terminal in Linux.

Linux offers a variety of means for sending messages to users logged on to a server as explained in the two methods below.

In the first method, we will use wall command – write a message to all currently logged in users on the terminal as shown.

Send Message to Logged Users

To disable the normal banner printed by wall, for example:

Add the -n (Suppress the banner) flag, this however, can only be used by the root user.

In the second method, we will use write command, which comes pre-installed on all if not most Linux distributions. It allows you to send a message to another user in the terminal using tty.

First check the all logged on users with the who command as shown.

Find Logged in Users

There are currently two users are active on the system (tecmint and root), now the user aaronkilik is sending a message to the root user.

Send Message to User

Read Also:

That’s all! Do share with us other methods or commands for sending messages to all logged on users through the terminal in Linux. If you have any queries, please use the feedback form below.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

Thread: Howto send a broadcast message to all users?

Thread Tools
Display

Howto send a broadcast message to all users?

I’m looking for a solution to broadcast messages on the network.
All systems are Linux / Ubuntu.

It would be used in case the server has to be rebooted.
It saves me a walk to every office in the building.

Re: Howto send a broadcast message to all users?

So far I have found a sort of solution.
This solution uses a combination of samba and linpopup.

Since we are only using Ubuntu in our network, we don’t want to install samba.
(Just for messaging purposes).

So anybody knows any other solution?
Maybe we could use a messenger like tool, but it has to popup on top of everything.
And we need the option to sent to all users at once.

Re: Howto send a broadcast message to all users?

You can set the time and broadcast a message to all users logged on.

Читайте также:  Bluesoleil bluetooth driver для windows 10

Re: Howto send a broadcast message to all users?

Thanks for your reply, but it’s not what I meant.
Problem is, that people are working on our server with applications like Frontaccounting, Sugarcrm and Xoops.

So I would like to be able to broadcast a message from this server to all clients on the network. Using this, I can inform people of the fact that the server will for example be rebooted in 15 minutes.

The people who need to receive the message are not logged in on the system using SSH or whatever. All of the applications used by the users are web-based. So their in fact apache users and they don’t have an user account on the system.

Re: Howto send a broadcast message to all users?

Dunno if it’s what you’re looking for — but try man wall.

Re: Howto send a broadcast message to all users?

Doesn’t Man Wall only sent a message to the users logged in on the system?
(either local or remote)

From what i tested this doesn’t sent a message to the users using the web-server.
(our users are constantly using SugarCRM, so I want to sent a broadcast to them in case of server reboot)

Re: Howto send a broadcast message to all users?

Nobody?

I would swear that what i want to accomplish, is not that odd.
I can’t imagine that in the bigger companies the system administrator walks or calls to everyone to inform them about the upcoming server maintenance?

It doesn’t matter what program i use, or how i have to use it, the only requirment is that i can type the message once, and so it is displayed to all desktops in the company.

Re: Howto send a broadcast message to all users?

Nobody?

I would swear that what i want to accomplish, is not that odd.
I can’t imagine that in the bigger companies the system administrator walks or calls to everyone to inform them about the upcoming server maintenance?

It doesn’t matter what program i use, or how i have to use it, the only requirment is that i can type the message once, and so it is displayed to all desktops in the company.

install pidgin, add an account, select bonjour.

it basically uses zeroconf, it’s a simple lan/ ip messenger.

if that’s not what you need i can have a look around ?

Re: Howto send a broadcast message to all users?

install pidgin, add an account, select bonjour.

it basically uses zeroconf, it’s a simple lan/ ip messenger.

if that’s not what you need i can have a look around ?

Well, no hijacking intended, but without installing anything, is there another way? I admit, this may seem dumb, but for example, I have a logged-in «safety» user via ctrl+alt+F2, and when I alt+F7 to my admin user and broadcast a message with wall, the «safety» user receives no message despite receiving the message on the admin user’s terminal. If this is off subject, please say so, and I will edit my post to blank.
Edit: I had to:
mesg y
as the «safety» user. Is there a way to force messages to all users even if messages are set to n?

Last edited by AggravatedGestalt; January 13th, 2011 at 03:19 AM .

Источник

Udp broadcast message

Добрый день всем!

Чем отличается тип сообщения броадкаст от не броадкаста сервера от к клиентам? Пишу под линукс, т.е. использую sys/socket Для обычного сообщения, использую sendTo(), до етого заполняю структуру с айпишником клиента который будет принимать. Я так понимаю броадкаст это тип сообщения который будут приходить всем кто в сети. У меня вопрос: Что нужно еще добавить перед сендом, чтоб это сообщения приняли все кто слушают сервер(используют recvfrom) ?

Читайте также:  Настройка samba сервер windows

Заранее спасибо, буду рад любым примерам

Из того, что у вас пока не упомянуто — включить SO_BROADCAST на сокете. Вместо IP-адреса получателя ставить broadcast address.

broadcast adress как его задать? это значение из enum-a

+ко всему,надо учитывать, что броадкаст/мультикаст может зарезаться на роутере.

Я думаю, это тоже будем учитывать,сейчас нужно базовое сетевое общение

Еще вопрос по описанию сокета, функция bind, для данного типа сообщения где должна быть на сервере перед сендто или на клиенте перед recvfrom?

Потому что сейчас приходит только на один из клиентов, до второго клиента это сообщение не доходит

насколько я помню биндить udp не обязательно.. заполняешь SOCKADDR_IN для sendto, а на клиенте ловишь recvfrom и все.

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

хватит уже

2-я тема c «Пишу под линукс на С++, т.е. использую sys/socket» — читайте-же уже man`ы..

100500 раз пережёвано, есть man`ы по каждой отдельной функции/сущности, есть разделы info по отдельным вопросам и практике (оно всё есть непосредственно в вашей машине). есть сцуко книги «$subj для идиотов».

Ну сколько уже можно?

Не нервничайте так!

А вы не вбрасывайте-немного надоели вопросы лентяев нежелающих посмотреть, что у них под носом.

плюсую. ТС, марш читать.

MAC-адресом и IP-адресом

А если по теме и развёрнуто, то ОС при определении параметра SO_BROADCAST на сокете, определяет MAC как FF:FF:FF:FF:FF:FF сама, а IP-адрес широковещательного пакета вы уже определяете сами (да-да, тут вас ожидает нежданчик в виде неработоспособности offtopic-систем с некоторыми комбинациями этих адресов). Полный широковещательный адрес — это широковещательный MAC, приведённый выше и айпи вида 255.255.255.255, который должен (не всегда, может ограничиваться администратором системы) приниматься всеми системами независимо от IP-подсети, а есть вариант широковещательного MAC и широковещательного IP заданной подсети (например, 192.168.0.255/24 — последний IP в подсети всегда широковещательный для этой подсети и на него отвечают только системы, у которых назначен адрес этой подсети).

С мультикастами всё веселее, но в данном треде — это оффтоп.

Источник

Отправка и получение датаграм SO_BROADCAST из другой сети

Всем доброго времечка, не болеть и не дурнеть от СМИ!

Взялся я писать клиента на Пингвине, который получает бродкаст udp-датаграмму и посылает ответ таким же способом. Нужно это для того, чтобы удаленный девайс, который может находится в другой подсети, доступ к которому ограничен, смог словить пакет, и прислать свой в ответ со своим ip-адресом для дальнейшей с ним работы. Ну вот незадача — если говорить об SOCK_DGRAM, Linux стоит на страже любых поползновений, акромя тех, что в его сетке.

Общение проходит между Windows и Linux (я пишу для этой стороны).

Удалось протиснуться, установив опцию SO_BINDTODEVICE, хоть этот сокет начал отправлять, но этот сокет не принимает, а может лишь отправлять (насколько я понял из мануалов). То, что сработало, ниже:

Далее мои размышления пошли в сторону RAW-сокетов, что-то вроде этого

socket(AF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))

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

Только ОНО всё равно не работает, как надо: летит куча пакетов с первый байтом ‘E’. На просторах репозиториев находил, как люди устанавливают фильтры, но там жуткая морзянка из макросов, которую не каждый смелый человек отважится искать по крупицам. С posix сокетами раньше я не работал, использовал curl или qt, но нужда приперла. Прошу помочь навести порядок (что с чем мешать) с этими сокетами.

Посылка броадкастов в удаленную сеть — это тупиковый вариант в ipv4. В ipx если не ошибаюсь такая хрень работала 🙂

Читайте также:  Поменять картинку папки mac os

Любой нормальный роутер такую хрень дропает (форвардинг пакетов на широковещательный адрес).

Ты сам то подумай! Есть сетка с несколькими тысячами хостов. Ты туда один пакетик РАЗ! а тебе в ответ несколько тысяч ответов прилетает через узенький канал или еще более веселый вариант: юный хакер посылает пакет у которого оба адреса широковещательные.

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

Надеюсь, это тоже первоапрельская автокоорекция.

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

В первом примере (который с AF_INET сокетом) не вызывается bind. Сокет не имеет локального адреса, вот и не получает бродкаст. Надо его сбиндить на sin_family=AF_INET, sin_port=htons(SERVERPORT), sin_addr.s_addr=htonl(INADDR_ANY) .

Но посылать бродкасты через роутер это действительно хреново. Обычный бродкаст на ip=255.255.255.255, mac=ffff.ffff.ffff роутер должен дропать по rfc. Directed бродкаст на ip=x.y.z.255, mac=gateway-mac роутер может отфорвардить, а может дропнуть, в зависимости от настроек роутера.

DHCP требует форвардера при отсутствии dhcp-сервера в сети клиента.

Форвардинг пакетов на широковещательный адрес — это нестандартное поведение маршрутизатора.

Пробовал сделать bind на INADDR_ANY, в таком случае принимаются только те пакеты, которые я собственно сам отправил. Те, что из другой — не приходят, но их все так же видит WireShark. Судя по man, INADDR_ANY это бродкаст подсети, то бишь той, в которой я. Так же, пробовал делать это с INADDR_BROADCAST, результат тот же. Вариант с INADDR_ANY ниже:

«дропать по RFC» Имеется в виду DHCP(RFC 2131)?

«дропать по RFC» Имеется в виду DHCP(RFC 2131)?

rfc по которому роутер не форвардит пакет на широковещательный адрес сети попробуй найти сам 🙂 Это должно быть ооочень древним rfc.

У dhcp другая проблема. Пакет с 0.0.0.0->255.255.255.255 бесполезно передавать дальше, т.к. отвечать на адрес 0.0.0.0 бессмысленно.

SO_BINDTODEVICE — это отдельная магия, которая позволяет посылать пакеты мимо таблицы машрутизации. Тебе она нафиг не нужна.

SO_BROADCAST нужен только для посылки пакетов на широковещательный адрес своих (непосредственоо подключенных) сетей.

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

у меня такая фигня на мультикастах с чужих сетей была. помогло

Мультикастинг мне вряд ли подойдёт. Несмотря на то, что девайсы физически будут в одной сети, они могут иметь через пень колоду абсолютно неизвестные настроенные статические ip-шники. Именно поэтому я и влез в это «нелегальное» бродкастовое дело. Спасибо за советы. У меня, вроде как, получилось скрестить ужа с ежом на сокетах — итого созданы два сокета: один с SO_BINDTODEVICE для отправки и другой SOCK_RAW с ETH_P_IP, который, по сути, работает как снифер всей кучималы ещё до обрезки заголовков, начиная с канального уровня. И вот ОНО мне даже 10 Мб за 28 сек в 100Мбит-ной сетке прислало. Единственное, что меня ещё волнует, то, что размер даты упёрся в стандартные 1500 байт. Я полез мастерить что-то с mtu, увеличил — не помогло, увеличил буфер — не помогло, попытался включить/выключить фрагментацию — опять же «лесной друг-индеец» Линух отреагировал крайне отрицательно на все потуги. Понятно, что 1500 это стандартный размер пакета, но было бы здорово, если бы нашлось что-то вроде фрагментацию.

Источник

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