shell编程-发送消息
需求:利用 Linux 自带的 mesg 和 write 工具,编写一个向用户快速发送消息的脚本,输入用户名作为第一个参数,消息内容为第二个参数。脚本需要检测用户是否登录,是否打开消息功能,以及当前发送消息是否为空。
1、编写脚本
send_message.sh #!/bin/bash # 脚本说明:执行此脚本的时候需要传入两个参数($1用户名、$2消息内容),用于向指定登录用户快速发送消息。 # 判断用户是否登录,忽略大小写,多个用户的话匹配第一个 login_user=$(who | grep -i -m 1 $1 | awk '{print $1}') if [ -z $login_user ] then echo "$login_user 未登录!" echo "脚本退出..." exit fi # 判断用户是否开启发送消息功能 is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}') if [ $is_allowed != "+" ] then echo "$login_user 未开启发送消息功能,请先开启!" 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
2、给脚本添加可执行权限
[root@hadoop129 scripts]# chmod u+x send_message.sh
3、执行脚本
[root@hadoop129 scripts]# ./send_message.sh zhongxintao hello,welcome to linux! 发送成功!
4、登录用户查看消息
[zhongxintao@hadoop129 ~]$ Message from root@hadoop129 on pts/0 at 15:45 ... hello,welcome to linux!

浙公网安备 33010602011771号