shell脚本 给linux上的用户群发信息

来源:互联网 发布:自动供料机的plc编程 编辑:程序博客网 时间:2024/05/01 07:50
在项目连调的过程中,因为需要修改共用的MakeDebug,但是打开文件的时候发现该文件被打开,如果强制修改该文件的话,别人保存之后,就会覆盖我的内容。因此需要告知其他人,先关闭该该文件。
但是,这个时候,网络出现了故障,因此通过QQ群里发送信息的手段不行了。想到Linux用户之间可以发送信息,于是想到了一个好办法。


其实,如果用root权限的话,可以使用一个简单的方法【shutdown -k now '要发送的信息'】,但是我这个用户,权限不够,因此必须想其他方法。


上网搜到可以通过【echo "hello">/dev/pts/102】发送到指定终端。
扩展阅读: http://bbs.chinaunix.net/thread-409061-1-1.html 


我搜了一下,该目录的作用:
/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录
扩展阅读: http://blog.csdn.net/suiyuan19840208/article/details/7234722

因此,有多少终端,就有多少个文件,如下:
[billing_dx@bmcs1 pts]$ pwd/dev/pts[billing_dx@bmcs1 pts]$ ls0   11  14  17  2   22  25  28  30  33  36  39  41  44  47  5   52  55  58  61  64  67  7   72  75  ptmx1   12  15  18  20  23  26  29  31  34  37  4   42  45  48  50  53  56  59  62  65  68  70  73  810  13  16  19  21  24  27  3   32  35  38  40  43  46  49  51  54  57  60  63  66  69  71  74  9



通过【who am i】命令可以查看当前终端对应的终端号,如下:
[billing_dx@bmcs1 pts]$ who am ibilling_dx pts/52       Feb 26 09:52 (172.28.0.194)


向当前客户端发送信息
[billing_dx@bmcs1 pts]$ echo "hello" >/dev/pts/52hello



但是,通过这中方式只可以给一个用户发送信息,因此,可以通过shell脚本的方式,发送信息。如下:
#!/bin/bash# @file         SendMsg.sh# @author       ymm# @brief        给当前连接主机的终端群发信息# @date         2014/2/26 11:33:47# @History# 1 2014/2/26 11:33:47  author ymm    初步完成if [ $# -ne 1 ];then    echo "请输入要发送的内容:";    echo "eg:$0 hello"    exit -1;fiDir=/dev/pts/for pts in $(ls $Dir)do     echo $1 >${Dir}/${pts}done




通过上面的方式,就可以和连接主机的所有终端发送信息了。



0 0