一:归档文件
1.1 功能描述
实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/), 将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive 下。
1.2 相关技术
- 这里用到了归档命令:
- tar 后面可以加上-c 选项表示归档,
- 加上-z 选项表示同时进行压缩,得到的文件后缀名 为.tar.gz。
1.3 脚本实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #!/bin/bash
# 判断输入参数个数是否为1 if [ $# -ne 1 ] then echo "参数个数错误!请输入一个参数,作为归档的目录名称" exit fi
# 判断目录是否存在 if [ -d $1 ] then echo else echo "目录不存在" exit fi
DIR_NAME=$(basename $1) DIR_PATH=$(cd $(dirname $1); pwd)
echo DIR_NAME:$DIR_NAME echo DIR_PATH:$DIR_PATH
# 获取当前日期 DATE=$(date +%Y-%m-%d) echo $DATE
# 定义生成归档文件的名称 FILE=archive_${DIR_NAME}_$DATE.tar.gz DEST=/root/RupertTears/archive/$FILE
echo $FILE echo $DEST
# 开始归档目录文件 echo "开始归档..." tar -czf $DEST $DIR_PATH/$DIR_NAME
# 校验归档结果 if [ $? -eq 0 ] then echo "归档成功!" echo "归档文件为:$DEST" else echo "归档失败!" fi
exit
|
二:发送消息
2.1 功能描述
实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直 接跟要发送的消息。脚本需要检测用户是否登录在系统中、是否打开消息功能,以及当前发 送消息是否为空
2.2 相关技术
我们可以利用 Linux 自带的 mesg 和 write 工具,向其它用户发送消息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| [root@hadoop100 shell]# who am i root pts/0 2022-12-12 01:14 (172.16.80.1) [root@hadoop100 shell]# who root pts/0 2022-12-12 01:14 (172.16.80.1) ghost :0 2022-12-12 01:37 (:0) ghost pts/1 2022-12-12 01:38 (:0) [root@hadoop100 shell]# who -T root + pts/0 2022-12-12 01:14 (172.16.80.1) ghost ? :0 2022-12-12 01:37 (:0) ghost + pts/1 2022-12-12 01:38 (:0)
[root@hadoop100 shell]# mesg n [root@hadoop100 shell]# who -T root - pts/0 2022-12-12 01:14 (172.16.80.1) ghost ? :0 2022-12-12 01:37 (:0) ghost + pts/1 2022-12-12 01:38 (:0) [root@hadoop100 shell]# mesg y [root@hadoop100 shell]# who -T root + pts/0 2022-12-12 01:14 (172.16.80.1) ghost ? :0 2022-12-12 01:37 (:0) ghost + pts/1 2022-12-12 01:38 (:0)
[root@hadoop100 shell]# write ghost pts/1 hello welcome
|
2.3 脚本实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #!/bin/bash
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')
if [ -z $login_user ] then echo "$1 不在线" echo "脚本退出..." exit else echo $login_user fi
is_allowed=$(who -T | grep -i -m 2 $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
[root@hadoop100 shell]# ./send_msg.sh ghost hello ghost 发送成功!
|