本机用户通信命令《write,wall,mail》

write,wall,mail这三个命令都是用于本机用户之间的通信,write用于给特定用户发送消息,wall用于全系统广播,mail用于给指定用户发送邮件,write,wall发送的消息只能是登陆的用户才能接受到,而mail发送的邮件即使用户没有登陆也可以登陆之后进行查收。

write

write命令用于向指定登录用户终端上发送信息。通过write命令可传递信息给另一位登入系统的用户,当输入完毕后,按ctrl+d,表示输入结束并且发送。如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。

语法
write(参数)
参数
登录的用户名:指定要接受信息的登录用户;
登陆终端:指定接收信息的用户的登录终端。
实例

发信息之前不知道有哪些用户处于登陆状态,可以使用who或者w命令查询一下,tty1表示本机登录

[root@localhost mnt]# who
tiger    tty1         2018-06-12 13:52
root     pts/0        2018-06-12 13:53 (192.168.200.1)
root     pts/1        2018-06-12 14:42 (192.168.200.1)
[root@localhost mnt]# w
 14:45:52 up 51 min,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
tiger    tty1                      13:52    7:04   0.02s  0.02s -bash
root     pts/0    192.168.200.1    13:53    0.00s  0.07s  0.01s w
root     pts/1    192.168.200.1    14:42    3:45   0.00s  0.00s -bash

给tiger用户发送信息,输入用户名称之后就要回车键输入消息内容,如果继续输入之后回车会报错,消息内容输入完之后按Ctrl+d就是输入结束并且发送,此时登录用户就会从看到你发送的消息

[root@localhost mnt]# write tiger
xsvfsd
sdfg

给指定终端发送消息,linux是多用户操作系统,也可以一个用户多处登陆,此时就可以指定终端发送消息,终端号可以通过who或者w命令知道

[root@localhost mnt]# write root pts/1
nihao 
hello

wall

wall命令用于向系统当前所有打开的终端上输出信息。通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。

语法
wall(参数)
参数
消息:指定广播消息。
实例

可以输入完wall之后空格继续输入消息内容,然后回车发送,也可以输入完wall之后回车输入消息内容,然后Ctrl+d发送。
wall命令可以理解为write all

[root@localhost mnt]# wall
vsd
dfsv
[root@localhost mnt]# wall dsafsgf

mail

mail命令是命令行的电子邮件发送和接收工具,既可以给本机用户发送邮件,也可以给网络涌向用户发送邮件。

语法
mail(选项)(参数)
参数
-b<地址>:指定密件副本的收信人地址;
-c<地址>:指定副本的收信人地址;
-f<邮件文件>:读取指定邮件文件中的邮件;
-i:不显示终端发出的信息;
-I:使用互动模式;
-n:程序使用时,不使用mail.rc文件中的设置;
-N:阅读邮件时,不显示邮件的标题;
-s<邮件主题>:指定邮件的主题;
-u<用户帐号>:读取指定用户的邮件;
-v:执行时,显示详细的信息。
实例

直接使用shell当编辑器

mail -s "Hello from linuxde.net by shell" admin@linuxde.net
hello,this is the content of mail.
welcome to www.linuxde.net

第一行是输入的命令,-s表示邮件的主题,后面的admin@linuxde.net则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

使用管道进行邮件发送

echo "hello,this is the content of mail.welcome to www.linuxde.net" | mail -s "Hello from linuxde.net by pipe" admin@linuxde.net

使用管道直接敲入这行命令即可完成邮件的发送,其中echo后的是邮件正文。

使用文件进行邮件发送

mail -s "Hello from linuxde.net by file" admin@linuxde.net < mail.txt

使用上面的命令后,我们就可以把mail.txt文件的内容作为邮件的内容发送给admin@linuxde.net了。

使用上述三种方式都可以给外部邮箱进行邮件发送,但因为前面2中都是直接在shell中敲入邮件内容,因此无法输入中文,即使我们使用粘贴的方式输入了中文,那么收到的邮件也是乱码的。但第3种方式,我们可以在window下编辑好邮件内容后,放到linux下,再进行发送,这样就可以正常发送中文了。不过目前邮件的中文标题暂时没有找到解决办法。

因为mail程序本身就是调用sendmail来进行邮件发送的,因此我们可以在mail命令中使用sendmail的参数进行配置,比如我想使用特定的发件人发送邮件,可以使用如下命令:

mail -s "Hello from linuxde.net with sender" admin@linuxde.net -- -f user@linuxde.net<mail.txt

上面的命令中,我们使用了– -f user@linuxde.net这样的参数,这是sendmail的选项,其中-f表示邮件的发送人邮件地址。

很多情况下,我们也需要使用邮件来发送附件,在linux下使用mail命令发送附件也很简单,不过首先需要安装uuencode软件包,这个程序是对二进制文件进行编码使其适合通过邮件进行发送,在CentOS上安装该软件包如下:

yum install sharutils

安装完成后我们就可以来进行附件的发送了,使用如下命令:

uuencode test.txt test | mail -s "hello,see the attachement" admin@linuxde.net<mail.txt

完成后就可以把text.txt文件作为邮件的附件发送出去了。uuencode有两个参数,第一个是要发送的文件,第二个是显示的文件名称。

这里我主要介绍的是在CentOS下使用mail发送电子邮件的一些使用方法,需要的要求是你的linux必须安装了sendmail并开启了,同时保证可以连接外网。另外,文章中提到的命令本人都经过亲自测试,保证完全可用,不过你需要将命令中的电子邮件地址换成自己的电子邮件地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值