使用Linux命令来发送信息

使用Linux命令来发送信息(转贴)2007-10-08 12:13  Linux发展到今天,很多功能已经可以在可视化的界面中来完成。不过在很多情况下,命令还是非常有用的,特别是Linux系统管理员可以通过命令发送系统休息、布告栏信息、公共信息的方式与其他用户沟通。

  设置登录提示

  /etc/motd文件的用途

  /etc/motd?即message?of?today(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息,例如:管理员通知用户系统何时进行软件或硬件的升级、何时进行系统维护等。如果shell支持中文,还可以使用中文,这样看起来更易于了解。/etc/motd?缺点是,现在许多用户登录系统时选择自动进入图形界面,所以这些信息往往看不到。

  /etc/issue文件的用途

  /etc/issue文件的使用方法与/etc/motd文件相差不大,它们的主要区别在于:当一个网络用户或通过串口登录系统上时,/etc/issue的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。

  使用write命令

  用户可以使用write命令给其他在线用户发送消息。格式:

  #write username [tty]

  在Shell提示符号输入write,username指接受发送信息的用户名。如果一个用户多次登录到系统, tty参数指定要发送的终端。使用write发送信息的前提条件是该用户已经登录到系统。否则会出现以下提示:

  #write cjh
  write:cjh is not logged in

  可以使用who命令查询登录用户名称。接着可以输入要发送的信息。当输入完毕后,键入EOF表示信息结束,用Crtl+D组合键发送信息。输入内容会出现在用户的屏幕上,同时通信中止。

  如果在网络上可以使用write命令在username后加入主机名称或域名,建立网络通信。如果要和cao主机上的bj用户通信使用命令:

  #write bj@cao

  可以使用rusers命令列出所有局域网上的登录用户。

  wall命令

  如果想要发送一条信息给系统中所有用户,可以使用wall命令,wall表示:write all。输入wall,然后编辑信息,如果shell支持可以使用中文。然后使用Crtl+D组合键发送信息。这样系统所有登录用户的桌面会收到信息。如果在网络上,可以使用rwall命令把信息发送到局域网上所有的用户。

  talk命令

  talk命令可以和另一个登录系统用户实现双向对话。系统管理员输入信息,用户也可以输入自己的信息。双方都可以看到交流时的屏幕信息。格式:

  #talk username

  一个例子:

  #talk b

  对方屏幕显示:

  Message from [email protected] at 7:18 ...
  talk: connection requested by [email protected].
  talk: respond with: talk [email protected]

  然后进入talk分屏界面,双方输入的信息。会出现的对方的屏幕。

  用户完成会话后使用Crth+C断开连接。和write一样可以使用在username后加入主机名称或域名,建立网络会话连接。

  mesg 命令

  用户可以阻止其他用户给自己发送消息打断工作,使用mesg n命令禁止其他用户发送消息。当别人试图再使用write给他发送信息时,发送者将会看见提示:

  #write: user has messages disabled on pts/n?

  但是超级用户可以给任何用户发送消息,即使用户使用mesg n命令。要恢复接受信息输入:

  mesg -y

  Linux服务器运行的软件主要是开源软件,而且都在不停升级,稳定版和测试版交替出现。如果你是一个Linux网管员,你经常需要上相应的网站看,是否有补丁,是否有了bug fix,是否需要升级。网络管理员还要给用户提供安全服务。对用户要定期发送安全信息,是让用户具有安全意识。通过使用以上命令可以更好帮助管理用户。

在UNIX操作系统中,为了通知用户某条信息,我们常常采用向用户能看到的屏幕写信息的方法实现。
   向单一屏幕发送信息
   每个登录主机系统的用户都分配有一个终端号,例如主控台上的12个屏幕分别为tty01~tty12,从多用户卡上登录一般有tty2a、tty2b、tty21a……等等终端设备号,如果是远程登录则为ttyp0、ttyp1等虚拟终端号。它们对应的终端设备文件都在/dev目录下。
  echo'让我告诉你:……' > /dev/tty03

  这种方法使用了输出转向符“>”直接写终端文件/dev/tty03来实现向屏幕发送信息。与以下其他三种方式不同的是,这种方法是针对终端的,而不是针对登录用户的,所以即使该终端没有用户登录,使用这种方法也可以向屏幕发送信息。但其他三种方法只能对有用户登录的屏幕发送信息。


   向指定用户发送信息


   同一个系统用户可以在多个终端登录,例如超级用户可以在主控台三号屏幕,同时也可以在多用户卡连接的tty21c终端登录。此时要向指定屏幕发送信息可以用write命令。

  write root tty03

  如果用户只在一个屏幕登录,可以省略第二个参数。利用这个命令可以实现聊天功能,因为每次回车后信息即发送至指定屏幕,这种特性是其他几种发送信息方式无法实现的。“终止”使用Ctrl+d组合键。


   向登录主机的所有用户发送信息


   多用户系统特有的广播概念:像无线广播一样,让所有人都听到你的声音。

  wall

  wall -g group

  wall -g root see.txt

  例子中“-g”参数指定用户组,实现向特定组发送信息的功能。换言之,系统中有多个用户组登录,你只想将信息广播到ROOT超级用户组属性登录的用户屏幕,可以用“-g root”参数。无参数的wall命令向所有登录系统的用户发送屏幕信息,一般用于要紧急关机的场合,提示用户在规定时间保存资料、退出系统。要广播的信息可以是一个文本文件中的内容,也可以直接输入,但与write不同的是,直接输入时每行信息回车后并不发送,只有在Ctrl+d组合键确认输入结束后才全部发送。需要注意的是:如果系统中无其他用户登录,各个屏幕(终端)都处于Login:等待登录状态,那么wall命令发送的信息就不会显示在屏幕上。


   向网络中的用户屏幕发送信息


   上面的三种方法只能对本地主机的屏幕发送信息,实际工作中我们会需要向网络中多台Unix主机的用户屏幕做同样的操作,以便统一行动,此时就要用到网络广播命令rwall。

  rwall 123.45.67.89 < see.txt

  它的参数就是要接受信息的Unix主机IP地址,使用“<”转向符将文本文件信息发送到指定主机的所有有用户登录的屏幕上。rwall命令不需要登录对方主机,不需要口令。实际应用中一般都作成一个shell文档,将要接受信息的主机列入其中,然后统一发送。例如shell文档为gb:

  rwall 123.45.67.89 < $1

  rwall 123.45.67.90 < $1

  rwall 123.45.67.91 < $1

  ……

  发送信息时:./gb see.txt。

  同样,远程主机的屏幕只有有用户登录才能接受到信息,在login:状态下不会有信息发送到屏幕上。如果对方主机已经关闭,或者线路出现故障,系统会提示:“Couldn't contact 123.45.67.89 : RPC : Timed out”。

  以上方法、命令在SCO Unix5.05系统中测试通过,在其他Unix系统中可能命令的具体形式会有所变化。

你可能感兴趣的:(linux命令)