Linux command line message

How to Send Broadcast Message to Logged-in Users on Linux Terminals

Linux is a multi-user operating system that allows multiple users to log in and use the system. This implies that at any given time, you might have several users logged in.

Sometimes, you might need to send a message or notification to all the users without necessarily placing a phone call or sending them emails. This is mostly when you want to announce a maintenance task or instruct them to log out.

In this guide, we will demonstrate how you can send messages to all logged-in users in the system. This only applies to users who are logged in via a terminal window using an SSH client such as PuTTY.

Send Messages to Logged-in Users Using the Wall Command

The wall command is a command-line utility that displays messages to all logged-in users on the terminal.

The wall command takes the following basic syntax:

If no file is specified, then the wall command reads the message from standard input and broadcasts it to all logged-in users.

For example, the following command reads the message enclosed in quotation marks as the argument and sends it to all logged-in users

# wall "The system will be shutting down at 1500HRS for maintenance. Apologies for any inconvenience caused".

Send Broadcast Message to Users in Terminal

When viewed from a logged-in user (in this case bob), the message appears as shown on the terminal window.

Broadcast Message from Root

To display a message from a file, invoke the wall command followed by the file name as shown.

View Broadcast Message from File

This is how the user receives the message on the terminal.

Broadcast Message To User

Send Messages to a Specific Logged-in User

Alternatively, you can use the write command to send a message to a specific user. To list all the currently logged-in users, invoke the who command:

Show Logged-In Users on Linux

For example, to send a message to a user called winnie and notify her about a system restarting in the next 3 hours, run the following write command with the echo command.

$ echo "This system will be restarted in 3 hours" | write winnie

On the user’s terminal, the message will appear as shown.

Send Message to User in Terminal

Conclusion

We have covered various ways of sending a message or notification to logged-in users using the wall and write commands. We hope that you can now send messages to logged-in users without a problem.

Источник

Linux mail command examples – send mails from command line

Being able to send emails from command-line from a server is quite useful when you need to generate emails programatically from shell scripts or web applications for example.

This tutorial explains, how to use to the mail command on linux to send mails from the command-line using the mail command.

Читайте также:  Линукс показать всех пользователей

How the mail command works

For those who are curious about how exactly the mail command delivers the mails to the recipients, here is a little quick explanation.

The mail command invokes the standard sendmail binary (/usr/sbin/sendmail) which in turns connects to the local MTA to send the mail to its destination. The local MTA is a locally running smtp server that accepts mails on port 25.

mail command -> /usr/sbin/sendmail -> local MTA (smtp server) -> recipient MTA (and Inbox)

This means that an smtp server like Postfix should be running on the machine where you intend to use the mail command. If none is running you get the error message «send-mail: Cannot open mail:25».

Install the mail command

The mail command is available from many different packages. These packages are available in the default repositores of most of the popular linux distributions like debian, ubuntu, centos and fedora.

Here is the list of some of the common packages that provide the mail command.

1. gnu mailutils
2. heirloom-mailx
3. bsd-mailx

Each flavor has a different set of options and supported features. For example the mail/mailx command from the heirloom-mailx package is capable of using an external smtp server to send messages, while the other two can use only a local smtp server.

In this tutorial we shall be using the mail command from the mailutils package, which is available on most Debian and Ubuntu based systems.

Use the apt-get command to install it

Now you should have the mail command ready to work.

mail command examples

Here are some examples of how to use the mail command to send mails from the command line. These examples shall give you a basic idea of the various options and features supported by the mail command.

Note: If you are trying to send a test mail to some mail provider like gmail or outlook, then you would need to run these commands on a server with proper configuration. If you try to send mail from you local machine or desktop, then most spam filters would probably block it.

1. Sending a simple mail

Run the command below, to send an email to [email protected]. The s option specifies the subject of the mail followed by the recipient email address.

The above command is not finished upon hitting Enter. Next you have to type in the message. When you’re done, hit ‘Ctrl-D’ at the beginning of a line

$ mail -s «Hello World» [email protected] Cc: Hi Peter How are you I am fine Good Bye

The shell asks for the ‘Cc’ (Carbon copy) field. Enter the CC address and press enter or press enter without anything to skip.

From the next line type in your message. Pressing enter would create a new line in the message. Once you are done entering the message, press . Once you do that, the mail command would dispatch the message for delivery and done.

2. Subject and Message in a single line

To specify the message body in just one line of command use the following style

3. Take message from a file

If the email message is in a file then we can use it directly to send the mail. This is useful when calling the mail command from shell scripts or other programs written in perl or php for example.

Читайте также:  При загрузки linux зависает при

4. Specify CC and BCC recipients

Other useful parameters in the mail command are:

-c email-address (CC - send a carbon copy to email-address) -b email-address (BCC - send a blind carbon copy to email-address)

Here’s and example of how you might use these options

$ mail -s "Hello World" us[email protected] -c [email protected] -b [email protected]

5. Sending to multiple recipients

It is also possible to specify multiple recipients by joining them with a comma.

6. Specify the FROM name and address

The «-a» option allows to specify additional header information to attach with the message. It can be used to provide the «FROM» name and address. Here is a quick example

The a option basically adds additional headers. To specify the from name, use the following syntax.

Note that we have to escape the less/great arrows since they have special meaning for the shell prompt. When you are issuing the command from within some script, you would omit that.

7. Send mail to a local system user

To send mail to a local system user just use the username in place of the recipient address

$ mail -s "Hello World" username

You could also append «@hostname» to the username, where the hostname should be the hostname of the current system.

8. Verbose output

Sometimes when testing mail servers, you would want to check the SMTP commands being used by the mail command. Use the «-v» option for that

If the mail fails to deliver due to an improperly configured mail server for example, the smtp command log will show what has gone wrong.

Send mail with attachments using Mutt

The mail command could do some basic things till now, but moving forward, it lacks important features like sending attachments.

So we have to use another command line tool called mutt. Mutt is like an enhanced version of the mail command with a very similar syntax.

Debian / Ubuntu users can install mutt with the apt command.

Fedora / CentOS or Red Hat Enterprise Linux (RHEL) users:

Now you are ready to send mail with attachments with command line interface.

Send mail with attachment

Use the «a» option to specify the path of the file to attach

According to the syntax of mutt options, it is necessary to separate the files and the recipients with a double dash «—«. Also the «-a» option should be last one.

Send mail with bash/shell scripts

This example demonstrates how the output of a command can be used as the message in the email.
Here is an easy shell script that reports disc usage over mail.

Open a new file and add the lines above to that file, save it and run on your box. You will receive an email that contains «du -sh» output.

Read mails

This is not something interesting and you would not be doing this in a real life scenario. It is just being shown for the sake of it.

The mail command can be used to read mails. Just run it without an options and it would list all the mails in your inbox

$ mail Heirloom mailx version 12.5 6/20/10. Type ? for help. "/var/mail/enlightened": 7 messages 3 unread O 1 Enlightened Sat Dec 6 11:33 21/658 This is the subject O 2 Enlightened Sat Dec 6 11:34 773/25549 This is the subject O 3 Enlightened Sat Dec 6 16:43 20/633 This is the subject O 4 Enlightened Sat Dec 6 16:44 20/633 This is the subject U 5 Mail Delivery Syst Sat Dec 6 16:50 74/2425 Undelivered Mail Returned to Sender U 6 Enlightened Sat Dec 6 16:51 19/632 This is mutts subject U 7 Enlightened Sat Dec 6 16:52 19/647 This is mutts subject ?

At the end is q question mark which is an interactive prompt waiting for your command. Simply enter the number of the email you want to read and hit enter. It would open up the mail then.

Читайте также:  Объем репозитория astra linux

After you are done reading the email, enter ‘q’ and hit enter to come back. Enter z and hit enter to bring back the list of emails.

The mail command by default reads the emails from the directory «/var/mail/ «. So every user has a separate mail directory.

This way of storing and fetching mails is not very useful or practical in real life, where mail address consist of domain name along with username and a single server could be hosting emails for multiple domains.

Maildir-utils command

‘mu’ is a set of command-line tools for Linux/Unix that enable you to quickly find the e-mails you are looking for.

Debian/Ubuntu users can use the apt-get command to install it

# apt-get install maildir-utils

To search mails from william with subject report use the following command —

$ mu find from:william subject:report

To check the current mail configurations use the info option.

# mu-tool info VERSION=2.99.97 SYSCONFDIR=/etc MAILSPOOLDIR=/var/mail/ SCHEME=mbox LOG_FACILITY=mail .

Notes and Resources

The mail command is a very basic command to send mails. It should be present and properly configured on any linux server, so that mails are generated and delivered properly.

The mail command is mostly used when you are writing bash scripts to send emails from a server in an automated fashion. Besides this, the mail command is not very useful as an email solution.

If you need to setup a complete email system on your server with the ability to send and receive emails on your own domain then go ahead and install applications like postfix, dovecot.

If you are looking for a more powerful mailing program use commands like mailx, swaks etc. They have the necessary options to specify external smtp servers as well.

A Tech Enthusiast, Blogger, Linux Fan and a Software Developer. Writes about Computer hardware, Linux and Open Source software and coding in Python, Php and Javascript. He can be reached at [email protected] .

26 Comments

  1. Moonwatcher June 21, 2021 at 1:01 pm Aha! Maybe I understand? This not ’email’, but mail meaning a message sent to someone who works in the same workplace, for example? If this is the case it’s of no use to me at home — unless of couse I wish to send messages to myself! Am I right?
  1. Anatoly Rozhkov July 2, 2019 at 2:02 am I’ve figured out how to fix it, and found that ssmtp may be interfering postfix
    I’ve updated postfix and finally managed to send a message with end status 0, yet… it never arrived

Источник

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