五、Shell自动化脚本

2023-05-16

一键安装Nginx

  1. 脚本 install_nginx.sh

    #!/bin/bash
    #Use: 使用Shell脚本一键安装Nginx
    #Author: wl_it
    #Date: 2020.05.07
    
    # 1. yum安装编译工具及库文件
    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
    
    if [[ "$?" -ne 0 ]]; then
            echo -e "\033[33m 安装编译工具和库文件失败\033[0m"
            exit
    fi
    
    # 2. 安装pcre让Nginx支持Rewrite功能。安装到 /usr/local/src/目录下
    cd /usr/local/src/ && wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz && tar zxvf pcre-8.35.tar.gz && cd pcre-8.35 && ./configure && make && make install && pcre-config --version
    
    if [[ "$?" -ne 0 ]]; then
            echo -e "\033[33m 安装pcre失败\033[0m"
            exit
    fi
    
    # 3. 安装Nginx。安装到 /usr/local/src/
    cd /usr/local/src/ && wget http://nginx.org/download/nginx-1.16.0.tar.gz && tar zxvf nginx-1.16.0.tar.gz && cd nginx-1.16.0 && ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 && make && make install && /usr/local/webserver/nginx/sbin/nginx -v
    
    if [[ "$?" -ne 0 ]]; then
            echo -e "\033[33m 安装Nginx失败\033[0m"
    else
            echo -e "\033[32m 安装Nginx成功\033[0m"
    fi
    
    

mysql数据库备份脚本

  1. 编写脚本

    #!/bin/bash
    #Use: mysql按天自动备份脚本
    #Author: wl_it
    #Date: 2020.05.06
    
    #备份目录
    BAK_DIR=/data/backup/`date +%Y%m%d`
    #数据库名称
    MYSQL_DB=study_cloudalibaba_db
    #备份专用数据库登陆名
    MYSQL_USER=backup
    #备份专用数据库登陆密码
    MYSQL_PWD=123456
    #Mysql备份命令
    MYSQL_CMD=/usr/bin/mysqldump
    
    #该脚本必须以root用户执行
    if [ $UID -ne 0 ];then
            echo "该脚本必须以root执行"
            exit
    fi
    
    #如果备份目录不存在则创建
    if [ ! -d $BAK_DIR ];then
            mkdir -p $BAK_DIR
            echo -e "\033[32m备份目录$BAK_DIR创建成功\033[0m"
    else
            echo "备份目录$BAK_DIR已存在"
    fi
    
    #执行Mysql备份命令
    $MYSQL_CMD -u$MYSQL_USER -p$MYSQL_PWD -d $MYSQL_DB --skip-lock-tables > $BAK_DIR/$MYSQL_DB.sql
    
    #判断上面的备份命令是否成功
    if [ $? -eq 0 ];then
            echo -e "\033[32m备份$MYSQL_DB成功\033[0m"
    else
            echo -e "\033[31m备份$MYSQL_DB失败,请检查\033[0m"    #31m表示输出红色前景色
    fi
    
    

    当一切都正确时 执行脚本 输出

    在这里插入图片描述

​ /bin/bash -n auto_backup_mysql.sh 检查脚本语法是否正确 没有输出表示正确

​ 如果有语法错误会报错,类似下面这样

在这里插入图片描述

系统备份

  1. 输出当前时间

    echo `date +%Y-%m-%d\ %H:%M`
    
  2. 全量备份命令

    tar -g /tmp/snapshot -czvf /tmp/20200517_full_shell.tar.gz /root/shell/
    # -g 创建一个快照
    #全量备份/root/shell/ 目录下的文件到 /tmp/20200517_full_shell.tar.gz 中
    
  3. 增量备份命令

    tar -g /tmp/snapshot -czvf /tmp/20200517_add_shell.tar.gz /root/shell/
    #在原来快照的基础上 增量备份新增或修改的文件
    #和上面的命令是一样的 只是备份压缩的文件名不同
    #其实在第一次执行备份时 在/tmp/目录下创建了一个名为snapshot的文件
    #所以两次执行备份指令的区别就是 如果不存在/tmp/snapshot文件 就执行全量备份 否则在上次备份的基础上执行增量备份
    
  4. 自动化脚本实现

    每周日执行全量备份,其余每天执行增量备份

    #!/bin/bash
    #Use: Shell脚本实现系统的全量和增量备份 每天执行一次 如果是周末 则执行全量备份 否则执行增量备份
    #Author: wl_it
    #Date: 2020.05.17
    
    #必须指定备份的目录
    if [ -z $1 ]; then
            echo -e "\033[31m必须指定备份的目录\033[0m"
            exit
    fi
    
    #日期
    DATE=`date +%Y-%m-%d`
    #星期几
    WEEK=`date +%u`
    #备份的目的地址
    BACK_DIR="/tmp/back/"
    TARGET_DIR=$1
    #全量备份函数
    function full_backup() {
            if [ "$WEEK" -eq "7" ];then
                    mkdir -p $BACK_DIR
                    rm -f ${BACK_DIR}snapshot
                    tar -g ${BACK_DIR}snapshot  -czvf ${BACK_DIR}${DATE}-full-data.tar.gz $TARGET_DIR
    
                    echo -e "\033[32m全量备份完成!!\033[0m" 
            fi
    }
    
    #增量备份函数
    function add_backup(){
            if [ "$WEEK" -ne "7" ];then
                    mkdir -p $BACK_UP
                    tar -g ${BACK_DIR}snapshot  -czvf ${BACK_DIR}${DATE}-add-data.tar.gz $TARGET_DIR
                    echo -e "\033[32m增量备份完成!!\033[0m"
            fi
    }
    
    #执行函数
    full_backup
    add_backup
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

五、Shell自动化脚本 的相关文章

  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • awk: hping: 打印 icmp 发起/接收之间的差异

    我有以下输出hping http ports su net hping在 OpenBSD 上 hping icmp ts www openbsd org HPING www openbsd org re0 129 128 5 194 icm
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 在 bash 中使用单个命令为 shell 变量分配默认值

    我对 bash 3 00 shell 脚本中的变量进行了大量测试 如果未设置变量 则它会分配默认值 例如 if z VARIABLE then FOO default else FOO VARIABLE fi 我似乎记得有一些语法可以在一行
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • C程序调用shell脚本

    我有一个小型 C 程序 调用 shell 脚本 myScript sh 我得到的 ret 值为 256 请帮助我了解系统调用出了什么问题 int main int ret ret system myScript sh ret gt gt r
  • 如何在 shell 脚本中操作 $PATH 元素?

    有没有一种惯用的方法从类似 PATH 的 shell 变量中删除元素 这就是我想要的 PATH home joe bin usr local bin usr bin bin path to app bin and remove or rep
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 如何查看正在运行的 tcsh 版本?

    如何查看我的 UNIX 终端中运行的 tcsh 的当前版本 看着那 这version多变的 echo version tcsh 6 14 00 Astron 2005 03 25 i386 intel linux options wide
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • 从 UNIX 命令行向串行端口发送字节?

    我想使用命令行将字节流发送到串行端口 这可能吗 我的串口位于 dev cu usbserial A700dYoR在我的 Mac 上 例如 如果我想将整数 50 或字符串 data 发送到该串行端口 我该怎么做 我对 UNIX 的了解非常有限
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 检查 Bash 数组中是否存在元素[重复]

    这个问题在这里已经有答案了 我想知道是否有一种有效的方法来检查 Bash 数组中是否存在元素 我正在寻找类似于我可以在Python中做的事情 例如 arr a b c d if d in arr do your thing else do
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc

随机推荐

  • 常用数据库建模工具

    收藏 xff1a http www oschina net project tag 83 db model Intellij下mybatis插件 MyBatisCodeHelper 国产 MyBatisCodeHelper 是 Intell
  • surface pro 4 发热抖屏的解决方法

    用了三年 xff0c 同样的问题 xff0c 以下方法试验中 以牺牲性能方法来降低发热 xff0c 从而避免抖屏 xff0c 不得已而为之 https tieba baidu com p 5598171696 red tag 61 1289
  • 关于物化视图增量刷新报ORA-12018 问题的解决方案

    由于表之前采用的是全量刷新方式进行刷新 xff0c 但是因为表的数据量越来越大 xff0c 全量刷新的时候偶尔会出现失败的情况 xff0c 因为同一个时点刷新的任务比较多 xff0c 回滚段被占满了之后会出现报错 xff0c 所以急需要解决
  • c语言中四种简单的数组排序

    前言 本文介绍了几种c语言中对乱序数组的排序方式 具体的内容有 xff1a 插入排序 xff1b 冒泡排序 xff1b 选择排序 xff1b 希尔排序 xff1b 具体内容详见下文 一 插入排序 1 思路 首先假设数组的的前n位元素是有序的
  • 网桥的功能和分类

    br lan 61 lan 网桥 将WLAN和LAN 交换机 绑定为一个虚拟接口 连接两个局域网 xff0c 负责数据的中继和转发 交换机的前生 集线器 xff08 Hub xff09 是中继器的一种形式 xff0c 区别在于集线器能够提供
  • Java简介

    今天开始学习Java啦 xff0c 每天进步一点点 xff01 1 Java语言发展史 Java语言是美国Sun Stanford University Network 公司在1995年推出的计算机语言 xff0c java之父 xff1a
  • win10上WSL+vscode+xserver配置linux图形化程序开发环境

    受够了双系统来回切换 xff0c 尝试了一下wsl配置linux环境 xff08 个人习惯在linux上敲代码 xff09 xff0c 由于需求图形化 xff0c 又弄了xserver 没有装linux图形界面 WSL 安装按着官方的文档来
  • 02.Ubuntu 18.04安装KVM

    02 Ubuntu 18 04安装KVM 1 检查是否支持虚拟化 span class token function egrep span span class token parameter variable c span span cl
  • maven 打包缺失 resources 目录下的 jar 包,警告 jar should not point at files within the project directory

    报错如下 INFO Scanning for projects WARNING WARNING Some problems were encountered while building the effective model for co
  • Linux 下利用trash替换rm

    前言 rmtrash 是linux和mac下命令行版本rm的回收站 xff0c 安装后对用户透明 xff0c 符合正常使用rm的习惯 支持rm fr file哦 xff0c 有了他再也不怕rm时候手颤抖了 能自动拒绝 rm fr 哦 安装
  • 【异常】记一次前端因资源无法加载导致白屏异常问题

    一 背景 自从运维同事强烈要求前端的环境要使用多套的 xff0c 参考文章 项目 参考若依的前端框架去多环境 于是一番捣鼓与改造之后 xff0c 看似已经顺利了 但运维说 xff0c 前端还是有问题 xff0c 需要他帮我改下 xff0c
  • 三种方法实现后入先出的栈---leetcode题解225

    声明 xff1a 问题描述来源于leetcode 一 问题描述 xff1a 用队列实现栈 CategoryDifficultyLikesDislikesalgorithmsEasy 67 64 480 Tags stack design C
  • iOS|开发小技巧之UIView创建xib

    我们有的时候在创建UIView的时候 xff0c 想要使用xib进行创建视图发现 xff0c xib文件不能和UIView文件一起创建 所以 xff0c 我们要单独创建xib文件 我们选择Empty文件 xff0c 而不要选择View文件
  • PyCharm中安装Vim插件ideavim 并关闭vim编辑模式

    在PyCharm中安装Vim插件ideavim 进入File菜单下的Settings下的Plugins 搜索ideaVim 找到ideaVim插件 点击Install安装 重启并享受在Pycharm环境中使用Vim的乐趣 支持Vim三种模式
  • C++ typedef用法小结 (※不能不看※)

    第一 四个用途 用途一 xff1a 定义一种类型的别名 xff0c 而不只是简单的宏替换 可以用作同时声明指针型的多个对象 比如 xff1a char pa pb 这多数不符合我们的意图 xff0c 它只声明了一个指向字符变量的指针 xff
  • 中兴F450电信光猫改桥接模式

    前几天突然想搞外网访问 xff0c 但是电信这款光猫DMZ不能用让我很愁 xff0c 后来经过一番了解可以让光猫只负责光数转换 xff0c 剩下的事情交给路由 xff0c 但是要把光猫设置成桥接模式 这个光猫比较特殊不需要进入超级管理员只需
  • 群辉默认DDNS功能解析阿里云-自定义服务商

    前言 前不久买了个群辉NAS发现群辉DDNS不能解析阿里云 xff0c 后来找了很多教程都是部署Docker或使用其他平台转发一下 xff0c 然而这些平台还要注册 xff0c 我就在想我自己可不可以实现不需要注册就可以使用的DDNS xf
  • Debian 给非 ROOT 用户添加 sudoer 权限

    问题描述 从官方镜像安装的 Debian 9 xff08 Stretch xff09 比较纯净 xff0c 但因此需要自己安装 配置许多常用的 Linux 应用 xff0c 这里就需要 sudo xff08 super user do xf
  • ffmpeg Could not find codec parameters for stream

    在arm上使用ffmpeg rtmp拉流时出现了下面异常 xff1a flv 64 0x1b0e120 Could not find codec parameters for stream 2 Video h264 none 2560 kb
  • 五、Shell自动化脚本

    一键安装Nginx 脚本 install nginx sh span class token shebang important bin bash span span class token comment Use 使用Shell脚本一键安