1. Linux自带的 mesg 和 write 工具实现对话
- mesg:查看当前终端用户是否打开了消息功能,
is y
表示打开,is n
未打开。 - 如果未打开,需要使用
mesg y
打开。mesg n
表示关闭消息功能 - 另外,who -T 可以查看所有用户是否打开消息功能
+
表示打开。 - write [用户名] [终端],表示给哪个用户发送消息。
- Ctrl + c 退出。
2. Wechat 文本编写
#!/bin/bash
# 查看用户是否登录
# -i 表示忽略大小写, -m 1 表示登录用户$1中的第一个用户,2的话就是$1的前两个
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')
# -z 判断$login_user该值是否为空
if [ -z $login_user ]
then
echo "$1 不在线!"
echo "脚本退出.."
exit
fi
# 查看用户是否开启消息功能
is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}')
if [ $is_allowed != "+" ]
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
-i 表示忽略大小写, -m 1 表示登录用户$1中的第一个用户,2的话就是$1的前两个