标签 脚本 下的文章

批量创建系统及相关配置脚本

copy.sh
批量创建网站程序

    #!/bin/bash
    
    #---------------------------------------
    # 批量复制部署系统程序
    # author: SenSen 1050575278
    # date: 2021/10/16
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    #确定版本号
    read -p "Enter Version Code to continue : " code
    
    if [ "$code" ]; then
    
      #待部署系统文件夹名称 todo 待通过dns文件获取
      sysDir=(t001 t002)
    
      #源文件 依据系统版本
      sourceDir="/web/source/${code}.zip";
    
      #判断文件是否存在
      if [ ! -f "${sourceDir}" ];then
        echo "Error: File not found"
        exit
      fi
    
      #安装目录
      baseDir='/web/oa/'
    
      for f in "${sysDir[@]}"
        do
          #获取当前时间
          curtime=`date +"%Y/%m/%d %H:%M:%S"`
    
          #复制
          cp -rf ${sourceDir} ${baseDir}${f}".zip"
    
          #解压 默认解压到当前
          unzip -oq ${baseDir}${f} -d ${baseDir}${f}
    
          #变更用户组
          chown -R www:www ${baseDir}${f}
    
          #删除压缩包
          rm -rf ${baseDir}${f}".zip"
    
          echo "${curtime} ${f} done"
        done
    else
        echo "Error: param is empty"
    fi

copy_conf.sh
批量创建系统配置文件

    #!/bin/bash
    
    #---------------------------------------
    # 批量生成网站配置文件
    # author: SenSen 1050575278
    # date: 2021/10/16
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    #进入伪静态目录
    cd /www/server/panel/vhost/nginx
    
    baseDir='/web/oa/'
    
    sysDir=`ls /web/oa`
    
    #循环生成伪静态
    for f in ${sysDir}
    do
      #复制
      cp "thinkphp_conf.conf" "${f}.speaklaw.cn.conf"
      #替换
      find "${f}.speaklaw.cn.conf" | xargs sed -i "s/sensen/${f}/"
    
      echo "${f} done"
    done

copy_rewrite.sh
批量创建系统伪静态配置

    #!/bin/bash
    
    #---------------------------------------
    # 批量复制部署系统程序
    # author: SenSen 1050575278
    # date: 2021/10/16
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    #进入伪静态目录
    cd /www/server/panel/vhost/rewrite
    
    baseDir='/web/oa/'
    
    sysDir=`ls /web/oa`
    
    #循环生成伪静态
    for f in ${sysDir}
    do
        cp "sensen.speaklaw.cn.conf" "${f}.speaklaw.cn.conf"
        echo "${f} done"
    done


`sensen.speaklaw.cn.conf` 伪静态配置文件

    location / {
        if (!-e $request_filename){
            rewrite  ^(.*)$  /index.php?s=$1  last;   break;
        }
    }

thinkphp_conf.sh 系统配置文件

    server
    {
        listen 80;
        server_name sensen.speaklaw.cn;
        index index.php index.html index.htm default.php default.htm default.html;
        root /web/oa/sensen/public;
        
        #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
        #error_page 404/404.html;
        #SSL-END
        
        #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
        #error_page 404 /404.html;
        #error_page 502 /502.html;
        #ERROR-PAGE-END
        
        #PHP-INFO-START  PHP引用配置,可以注释或修改
        include enable-php-74.conf;
        #PHP-INFO-END
        
        #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
        include /www/server/panel/vhost/rewrite/sensen.speaklaw.cn.conf;
        #REWRITE-END
        
        #禁止访问的文件或目录
        location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
        {
            return 404;
        }
        
        #一键申请SSL证书验证目录相关设置
        location ~ \.well-known{
            allow all;
        }
        
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
        {
            expires      30d;
            error_log /dev/null;
            access_log /dev/null;
        }
        
        location ~ .*\.(js|css)?$
        {
            expires      12h;
            error_log /dev/null;
            access_log /dev/null;
        }
    
        access_log_bypass_if ($request_uri = '/api/exec_notice');
    
        access_log  /www/wwwlogs/sensen.speaklaw.cn.log;
        error_log  /www/wwwlogs/sensen.speaklaw.cn.error.log;
    }

检测文件大小脚本

check_file_size.sh

    #!/bin/bash
    
    #---------------------------------------
    # 检测文件大小
    # author: SenSen 1050575278
    # date: 2021/10/10
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    read -p "Tips! Enter fileName (like 'app/index/controller/Index.php') to continue : " input
    
    #获取当前时间
    curtime=`date +"%Y/%m/%d %H:%M:%S"`
    
    #所在目录
    dir='/web/oa/'
    
    #自动获取系统目录文件 仅可包含oa系统文件
    sysDir=`ls /web/oa`
    
    for f in ${sysDir}
        do
            /bin/ls -l ${dir}${f}/${input} | awk '{print $5}'
            echo ${f}
        done

检测数据库中指定表是否存在指定字段脚本

check_mysql_field_exist.sh

    #!/bin/bash
    
    #---------------------------------------
    # 检测数据库是否存在指定字段 变量1:表名 变量2:字段名
    # 注:数据库名同文件夹名
    # author: SenSen 1050575278
    # date: 2021/10/10
    # 注意:所有脚本需测试后方可使用!!!
    #---------------------------------------
    
    if [ "$1" ] && [ "$2" ]; then
    
      #获取当前时间
      curtime=`date +"%Y/%m/%d %H:%M:%S"`
    
      #所在目录
      dir='/web/oa/'
    
      #连接数据库
      db_con="/usr/local/mysql/bin/mysql -uxxx -pxxx"
    
      #自动获取系统目录文件 仅可包含oa系统文件
      sysDir=`ls /web/oa`
    
      for db in ${sysDir}
          do
              ${db_con} -e "select count(*) from information_schema.columns where table_schema = '${db}' and table_name = '${1}' and column_name = '${2}';" >> /web/shell/check_mysql_field_exist.txt
              echo ${db} " done" >> /web/shell/check_mysql_field_exist.txt
          done
    else
        echo "Error: param is empty"
    fi

批量替换指定文件脚本

rewrite_file.sh

#!/bin/bash

#---------------------------------------
# 替换指定文件
# 注:参数1为新文件路径 参数2为原文件路径
# author: SenSen 1050575278
# date: 2021/10/10
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------

if [ "$1" ] && [ "$2" ]; then

  #获取当前时间
  curtime=`date +"%Y/%m/%d %H:%M:%S"`

  #所在目录
  dir='/web/oa/'

  #自动获取系统目录文件 仅可包含oa系统文件
  sysDir=`ls /web/oa`

  for f in ${sysDir}
    do
      cp -rf ${1} ${dir}${f}/${2}
      echo ${f} " done"
    done
else
    echo "Error: param is empty"
fi

thinkphp批量启动、停止命令行脚本

task.sh

#!/bin/bash

#---------------------------------------
# 批量启动、停止 task [考虑性能,此接口不再使用]
# author: SenSen 1050575278
# date: 2021/10/07
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------

#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`

#判断是否存在参数,不存在则取消
if [ "$1" == 'start' ] || [ "$1" == 'stop' ]; then
    #所在目录
    dir='/web/oa/'

    #自动获取系统目录文件 仅可包含oa系统文件
    sysDir=`ls /web/oa`

    #排除目录
    excluded=()

    for f in ${sysDir}
        do
            #排除指定目录
            if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
                continue
            fi
            #进入目录
            cd ${dir}${f}
            #执行对应操作
            #/usr/bin/php think task $1
            sleep 1
            echo "${curtime} ${f} done"
        done

else
    echo "Error: param is empty"
fi

脚本批量更新文件(即批量文件覆盖)

upgrade.sh
脚本功能:可对多个系统批量覆盖代码(可排除指定系统)需修改对应的目录变量。将zip升级包放置到指定目录中,通过定时任务完成更新。单次只能升级一个版本,不支持数据库升级,仅为文件覆盖功能。

#!/bin/bash

#---------------------------------------
# 批量更新多文件夹内容 支持排除指定目录
# 注:多系统升级时,为避免文件冲突,建议
# 单次单压缩包更新
# author: SenSen 1050575278
# date: 2021/09/10
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------

#添加定时任务 10min
# */10 * * * * /www/upgrade/upgrade.sh

#记录日志
log="/web/upgrade/upgrade.log"

#进入升级包所在目录 升级包必须包含version.txt文件
cd /web/upgrade/fix

#判断目录中是否有文件 原则上一次只能存在一个文件,避免多个升级包导致混乱
count=`ls -l|grep '^-'|wc -l`

#获取所有系统 废弃
# source ./wlt_dir.sh

#所在目录
baseDir='/web/oa/'

#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`

#排除目录
excluded=()

#测试示例
#sysDir=('wlt_3163')

#获取当前目录下的升级包
fixFile=`ls`

if [ $count -ne 0 ]; then
  for i in ${fixFile}
    do
      #获取当前时间
      curtime=`date +"%Y/%m/%d %H:%M:%S"`

      for f in ${sysDir}
        do
          #排除指定目录
          if [[ ${excluded[@]/${f}/} != ${excluded[@]} ]]; then
            continue
          fi
          echo "系统:${f} 升级文件:${i}">>${log}
          #解压到对应系统目录
          unzip -oq ${i} -d ${baseDir}${f}
          echo "${curtime} ${i} done">>${log}
        done
    done
    #移动升级包
    mv ${i} /web/upgrade/bak;
    echo "${i} upgrade successfully">>$log
else
    echo "upgrade_fix is empty"
fi