一、备份脚本
1.1 题目要求
实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive下。
归档命令:tar。后面加上-c选项表示归档,加上-z选项表示同时进行压缩,得到文件后缀名为.tar.gz
1.2 脚本内容
#!/bin/bash
echo "=================================题目要求=================================="
echo "实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive下。"
echo "归档命令:tar。后面加上-c选项表示归档,加上-z选项表示同时进行压缩,得到文件后缀名为.tar.gz"
echo "==========================================================================="
#判断参数个数是否为1
if [ $# -ne 1 ]
then
echo "参数输入错误,个数不为1!"
exit
fi
#判断输入参数是否存在
if [ -e $1 ]
then
#判断输入参数是否是目录
if [ -d $1 ]
then
echo
else
echo "请输入目录!"
exit
fi
else
echo "输入目录不存在!"
exit
fi
#判断目标文件夹是否存在
if [ -e "/root/archive" ]
then
echo
else
mkdir /root/archive
fi
#获得目录名
SOURCE=$1
cd $SOURCE
#生成归档地址:包括目标目录及文件名
TARGET_DIR=/root/archive/
TARGET_FILE=$(date "+%Y年%m月%d日%H:%M:%S").tar.gz
TARGET=$TARGET_DIR$TARGET_FILE
tar -zcvf $TARGET ./
echo "归档成功!"
1.3 脚本使用
[root@demo01 ~]# sh /root/桌面/demo6 /root/桌面
=================================题目要求==================================
实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive下。
归档命令:tar。后面加上-c选项表示归档,加上-z选项表示同时进行压缩,得到文件后缀名为.tar.gz
===========================================================================
./
./demo1
./demo5
./1.txt.tar.gz
./1.txt
./demo6
./demo7
./demo2
./demo3
./demo4
./cut.txt
./passwd
归档成功!
[root@demo01 ~]#
二、发送消息脚本
2.1 题目要求
实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。脚本需要检测用户是否登陆在系统中,是否打开消息功能(who)。以及当前发送消息是否为空。
利用Linux自带的mesg和write工具
2.2 脚本内容
- 消息内容不支持中文
#!/bin/bash
echo "================================题目要求==================================="
echo "实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。脚本需要检测用户是否登陆在系统中,是否打开消息功能(who)。以及当前发送消息是否为空。"
echo "利用Linux自带的mesg和write工具"
echo "==========================================================================="
#第一个参数:用户名
#第二个参数:消息
#判断参数个数是否小于2
if [ $# -lt 2 ]
then
echo "脚本错误:参数个数小于2!"
exit
fi
#判断户名是否存在
USER=$(who | grep -i -m 1 $1 | awk '{print $1}')
if [ -z $USER ]
then
echo "用户不在线!"
exit
fi
#判断该用户是否接受消息
ALLOWTTY=$(who -T | grep -i $1 | awk '{if($2=="+"){print $3}}')
if [ -z "$ALLOWTTY" ]
then
echo "用户不正忙,不接受消息"
exit
fi
#目标TTY
TTY=$(echo $ALLOWTTY | cut -d " " -f 1)
#消息:第二个参数开始的内容
MESSAGE=$(echo $* | cut -d " " -f 2-)
#开始发送消息
echo $MESSAGE | write $USER $TTY
if [ $? -ne 0 ]
then
echo "发送失败!"
exit
else
echo "发送成功!"
fi
2.3 脚本使用
发送方
[root@demo01 ~]# who
root :0 2022-08-13 15:02 (:0)
root pts/0 2022-08-13 20:47 (:0)
root pts/1 2022-08-13 21:07 (:0)
lzw pts/2 2022-08-13 21:10 (192.168.100.1)
[root@demo01 ~]# sh /root/桌面/demo7 LZW hello lzw!
================================题目要求===================================
实现一个向某个用户快速发送消息的脚本,输入用户名作为第一个参数,后面直接跟要发送的消息。脚本需要检测用户是否登陆在系统中,是否打开消息功能(who)。以及当前发送消息是否为空。
利用Linux自带的mesg和write工具
===========================================================================
发送成功!
[root@demo01 ~]#
接收方
[lzw@demo01 ~]$
Message from root@demo01 on pts/1 at 21:11 ...
hello lzw!
EOF