shell脚本的发送消息

我们可以利用 Linux 自带的 mesg 和 write 工具,向其它用户发送消息。

需求:实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直 接跟要发送的消息。脚本需要检测用户是否登录在系统中、是否打开消息功能,以及当前发 送消息是否为空。

脚本实现如下:

开启和关闭消息功能命令

[root@hadoop scripts]# mesg n    #消息功能关闭
[root@hadoop scripts]# who -T
root     + tty1         2022-04-20 11:51
root     - pts/0        2022-08-17 17:13 (192.168.17.1)
[root@hadoop scripts]# mesg y    #消息功能打开
[root@hadoop scripts]# who -T
root     + tty1         2022-04-20 11:51
root     + pts/0        2022-08-17 17:13 (192.168.17.1)
[root@Hadoop1 ~]# who am i
root     pts/6        2022-03-18 13:00 (192.168.17.1)
[root@Hadoop1 ~]# write root pts/3    #write后面接加用户名,地址
hi,zhangsan
[root@hadoop scripts]# vim send_msg.sh
#!/bin/bash

#查看用户是否登录
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')

if [ -z $ login_user ]
then
	echo "$1 不在线!"
	echo "脚本提出.."
	exit
fi

# 查看用户是否开启消息功能
is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}')

if [ $is_allowd != "+" ]
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
[root@hadoop scripts]# chmod u+x send_msg.sh 
[root@hadoop scripts]# ./send_msg.sh 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lambda-小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值