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

本文介绍了一种通过Linux命令向所有连接终端发送信息的方法,包括使用`echo`命令将信息发送到特定终端的技巧,以及通过Shell脚本实现批量发送信息的方案。此外,还详细解释了`/dev/pts`目录的作用及其如何用于查找连接终端的ID,最终提供了发送信息的完整流程和示例脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目连调的过程中,因为需要修改共用的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.youkuaiyun.com/suiyuan19840208/article/details/7234722

因此,有多少终端,就有多少个文件,如下:
[billing_dx@bmcs1 pts]$ pwd
/dev/pts
[billing_dx@bmcs1 pts]$ ls
0   11  14  17  2   22  25  28  30  33  36  39  41  44  47  5   52  55  58  61  64  67  7   72  75  ptmx
1   12  15  18  20  23  26  29  31  34  37  4   42  45  48  50  53  56  59  62  65  68  70  73  8
10  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 i
billing_dx pts/52       Feb 26 09:52 (172.28.0.194)


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



但是,通过这中方式只可以给一个用户发送信息,因此,可以通过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;
fi
Dir=/dev/pts/
for pts in $(ls $Dir)
do 
    echo $1 >${Dir}/${pts}
done




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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值