Week 5. Topic "Interacting with others"
With the advent of time-sharing computers in the early 1960s, people already passed messages through shared files. It was easy to implement as long as everybody worked in the same computer. Over time, for it to work across incompatible computers a complex web of gateways and routing systems developed. They all had their own formats of e-mail addresses. The common format today, username@domain, was created in 1971. Applications like messaging and chat are also very old ideas, which went through similar developments.
In this week’s unit you will get to know those original tools for viewing users logged on at a specific time, write and talk to them get information on users who are off-line and finally how to mail them - all in the command line.
5.1 Who else is there
5.1.1 who, what, last, etc.
Let’s see what manual pages exist related to ’who’:
$ man −k who
[...]
w (1) − Show who is logged on and what they are doing.
w.procps (1) − Show who is logged on and what they are doing.
who (1) − show who is logged on
who@ (1) − prints the list of active users on a remote host.
whoami (1) − print effective userid
[...]
The commands who (who is logged in), w (what they are doing) and whoami are interesting for us:
$ who −H
NAME LINE TIME COMMENT
user0 pts/0 2015−02−14 16:26 (1.2.3.4)
user1 pts/1 2015−02−14 16:47 (5.6.7.8)
user1 pts/2 2015−02−14 17:32 (5.6.7.8)
$ who am iis a special form of who -H referring to one's own login.
user1 pts/1 2015−02−14 16:47 (5.6.7.8)
$ w
17:34:06 up 8:15, 3 users, load average: 0.08, 0.09, 0.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user0 pts/0 1.2.3.4 16:26 49:26 1:13 0.39s sshd: pi [priv]
user1 pts/1 5.6.7.8 16:47 6.00s 2.17s 0.39s sshd: pi [priv]
user1 pts/2 5.6.7.8 17:32 1:26 1.21s 1.21s −bash
$ whoami
user1
if you use multiple accounts and don't know which one you are using. Doesn't make much sense in our practice computer since the shell prompt shows the userid.
The command last (last logged in) lists the users logged in last.
# last −5
user1 pts/1 1.2.3.4 Sat Feb 14 17:50 still logged in
user1 pts/0 1.2.3.4 Sat Feb 14 17:47 still logged in
reboot system 3.18.7+ Sat Feb 14 09:13 − 17:56 (00:10)
user0 pts/2 5.6.7.8 Sat Feb 14 17:32 − down (00:13)
user5 pts/2 8.7.6.5 Sat Feb 14 17:03 − 17:24 (00:20)
The user ’reboot’ is a special kind of a user. It shows that the local time is 17:56 and the machine has been running since 09:13 the same day.
5.1.2 finger
The command finger gives you some information of other users in the system: .
$ finger 19cs000
Login: 19cs000 Name: Bindu Raj
Directory: /home/e00000 Shell: /bin/bash
Office: PR21, 34 56 Home Phone: 012 345 67 89
Last login Mon Dec 29 19:33 (IST) on pts/0 from 10.20.30.40
Mail last read Sun Feb 15 00:14 2015 (IST)
The information must be recognizable. It also has the GECOS data we entered with the chfn command in Week 1.
You can leave additional information like vacation notices or about your current work. See for example:
$ finger e00000
[...]
Project:
Working on the Apollo mission ;)
Plan:
I am out of office till 25 February.
5.2 Messaging
5.2.1 write
With write you can write messages directly to other users' terminals.
$ write 19cs042
write: 19cs042 is logged in more than once; writing to pts/2
Let's take a break!
The write program imposes no rules, doesn’t have a protocol except that pressing Return sends complete lines to the other side. The convention is to take turns, ending turn with o (for “over”), and to signal your intent to quit with oo (for “over and out”). Finally, Ctrl-D ends the connection.
The following screen artificially seperates the messages of the two partners:
userX’s terminal userY’s terminal
−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−−
$ write userY
Message from userX ... $ write userX
Message from userY ...
How about lunch? (o)
In ten minutes. (o)
Fine! (oo)
Agreed. (oo)
Ctrl−D
EOF
Ctrl−D
EOF
If you don’t want to be bothered with such messages, read the man page for mesg.
5.2.2 talk
talk is what is today known as “chat”. In the example below userX starts a conversation by typing talk userY@localhost. Then userY responds as requested, that will join them in a full screen chat setup.
userX’s terminal userY’s terminal
−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−−
$ talk userY@localhost
Message from Talk_Deamon...
talk: connection requested
talk: respond with: ...
$ talk userX@localhost
[connection established]
X types here Y types here
Ctrl−C Ctrl−C
5.3 Mail
The system provides a postal system for communicating with other users. You must have noticed the message about mail as you logged in. You might even get notices of newly arrived mail.
To read your mail, open your mail client, often simply called mail. An overview of your mails, called mail headers, will be printed. To read a the current message, just type p (print), or to read a specific message type p N, N being the message number. h (headers) gives you the listing of headers. s FILENAME (save) will save a message in a file. d deletes messages, and q quits the program. Here is a session reading mail:
Heirloom mailx version 12.5 6/20/10. Type ? for help.
”/var/mail/e00000”: 2 messages
>O 1 Imran Khan Fri Feb 11 19:27 31/794 Hi there!
>O 2 Sharuk Khan Fri Feb 12 21:12 31/794 Greetings
>O 3 Kublai Khan Fri Feb 12 09:13 31/794 Bye bye
p 1
Message 1:
From Imran Khan Fri Feb 11 19:27:50 2015
[...]
Date: Fri, 13 Feb 2015 19:27:50 +0530
Subject: Hi there!
User−Agent: Heirloom mailx 12.5 6/20/10
Content−Type: text/plain; charset=us−ascii
From: e00000@arm (Dummy User)
Status: RO
Hi
[...]
Sending mail to someone is straightforward:
$ mail userY
[or within mail, m userY]
Subject: Just to say hi!
Type in the text of the letter
on as many lines as you like.
...
Ctrl−D
EOT
?
Here too Ctrl-D signals the EOT (end of text).
For practice, send a mail to yourself. (It is not as odd as it may sound - it’s a handy way of taking notes.)
There are other ways of sending mail – you can send a previously prepared letter, you can mail to a number of people all at once, and you may be even able to send mail to people on other machines. In this week’s assignment you will learn more about these things.
Note that the simple mail program we have in the practice computer is not a full featured with a rich set of encryption like SMIME, SSL, SMTP-Auth, etc. Which are beyond this course. But simple things like “signature” works. Create a file called .signature (note the dot as the first character) in your home directory and then send a mail.
Summary
In this week you’ve learnt:
- That the who and w commands tell you who is logged in
- that last and finger commands tells you about off-line users, and to make use of .project and .plan files
- to write and talk to others
- to use the built-in postal system mail