shell——综合练习:发送消息

我们可以利用Linux 自带的mesg 和write 工具,向其它用户发送消息。
需求:实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直
接跟要发送的消息。脚本需要检测用户是否登录在系统中、是否打开消息功能,以及当前发
送消息是否为空。
用其他用户yhx登录

 who am i

root pts/0 2025-02-27 08:57 (192.168.10.1)

# 查看是否打开了消息
 mesg

is y

# 查看当前登录用户
who 

root pts/0 2025-02-27 08:57 (192.168.10.1)
yhx pts/1 2025-02-27 16:17 (192.168.10.1)
yhx pts/2 2025-02-27 16:20 (192.168.10.1)

who -T
# +表示打开了mesg

root + pts/0 2025-02-27 08:57 (192.168.10.1)
yhx + pts/1 2025-02-27 16:17 (192.168.10.1)
yhx + pts/2 2025-02-27 16:20 (192.168.10.1)

# 向write yhx pts/1用户发送消息
write yhx pts/1

在这里插入图片描述
在这里插入图片描述

脚本实现

  • 查看用户是否登录
  • 是否开启消息功能
  • 确认是否有消息发送
  • 从参数中获取要发送的消息
  • 获取用户登录的终端
  • 写入要发送的消息
vim messege.sh
#/bin/bash

#判断用户是否登录
# grep -i :忽略大小写, -m 1 最大值是1 ,只能获取第一个用户
login_user=$(who|grep -i -m 1 $1 |awk '{print $1}')

if [ -z $login_user ]
#-z:判断是否为空
then
        echo "$1 不在线"
        echo "脚本退出"
        exit
fi


#判断是否开启了消息功能
isallowed=$(who -T |grep -i -m 1 $1 |awk '{print $2}')
#第二个参数为+,则开启了消息

if [ $isallowed != "+" ]
then
        echo "$1 没有开启消息功能"
        echo "脚本退出"
        exit
fi

#确认是否有消息发送
if [ -z $2 ]
then
        echo "没有消息发出"
        echo "脚本退出"
        exit
fi

#从参数中获取要发送的消息
whole_msg=$(echo $* | cut -d " " -f 2-)
#获取从第二个开始的所有参数

#获取用户登录的终端
user_terminal=$(who | grep -i -m 1 $1 | awk '{print $2}')
# 发送消息
echo $whole_msg | write $login_user $user_terminal

#判断是否执行成功
if [ $? != 0 ]
then
        echo "发送失败"
else
        echo "发送成功"
fi

exit

chmod u+x messege.sh
./messege.sh yhx "hhhhhhhhhhhhhhhhh"

发送成功

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值