Shell编程:(十)综合应用案例

该博客介绍了两个Linux自动化脚本的实现。第一个脚本用于每天对指定目录进行归档备份,使用tar命令进行压缩,并将归档文件保存在/root/archive下。第二个脚本则实现了向特定用户发送消息的功能,会检查用户是否在线及是否允许接收消息。这两个脚本提高了系统管理和维护的效率。
摘要由CSDN通过智能技术生成
10.1 归档文件

实际生产应用中,往往需要对重要数据进行归档备份。

需求:实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/), 将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive 下。

这里用到了归档命令:tar 后面可以加上-c 选项表示归档,加上-z 选项表示同时进行压缩,得到的文件后缀名 为.tar.gz。

脚本实现如下:

#!/bin/bash
#首先判断输入的参数是否是一个
if [ $# -ne 1 ];then
        echo "输入的参数错误!应该输入一个参数"
        exit
fi

#判断输入的参数是否是目录
if [ -d $1 ];then
        echo 
else
        echo
        echo "目录不存在!"
        echo
        exit
fi

#文件名
DIR_NAME=$(basename $1)
#文件目录
DIR_PATH=$(cd $(dirname $1);pwd)

#获取当前时间
DATE=$(date +%y%m%d)

#定义归档生成的文件名
FILE=archive_${DIR_NAME}_$DATE.tar.gz
#定义归档生成的文件路径
DEST=/root/archive/$FILE

#开始归档文件
echo "开始归档"
echo

tar -czf $DEST $DIR_PATH/$DIR_NAME
if [ $? -eq 0 ];then
        echo
        echo "归档成功"
        echo "归档文件夹为$DEST"
        echo
else
        echo
        echo "归档失败"
        echo
fi

exit
10.2 发送消息

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

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

脚本实现如下:

#!/bin/bash

#grep:-i 忽略大小写;-m num 搜索到num行后就停止搜索,并返回
login_user=$(who | grep -i -m 1 $1 | awk '{print $1}')
if [ -z $login_user ];then
        echo "$1 不在线"
        echo "脚本退出.."
        exit
fi

#who -T:获取用户信息,包括是否开启了消息功能
is_allowed=$(who -T | grep -i -m 1 $1 | awk '{print $2}')

if [ $is_allowed != "+" ];then
        echo "$1没有开启消息功能"
        echo "脚本退出"
        exit
fi

#-z:判断是否为空
if [ -z $2 ];then
        echo "没有消息发出"
        echo "脚本退出"
        exit
fi

#获取参数第二列以后的内容作为消息
whole_msg=$(echo $* | cut -d " " -f 2-)
#获取消息接收方的终端名
user_terminal=$(who | grep -i -m 1 | awk '{print $2}')
#发送消息:write user_name user_terminal msg
echo $whole_msg | write $login_user $user_terminal

if [ $? != 0 ];then
        echo "发送失败"
else
        echo "发送成功"
fi

exit
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值