linux rpm自动化安装脚本编写及优化

Posted 云来云去-起飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux rpm自动化安装脚本编写及优化相关的知识,希望对你有一定的参考价值。

         此处以httpd为列子,进行编写,具体内容如下:

一、RPM的脚本

1.1 RPM 自动化安装脚本编写思路

         (1)需要查看httpd 的服务是否存在,如果不存在,开始执行安装脚本,如果存在进行提示。

         (2)安装脚本,根据httpd安装时需要的依赖包,首先查看依赖包是否存在,如果不存在,需要安装依赖包。

         (3)依赖包安装完成后,检测依赖包是否存在。

         (4)然后安装httpd主服务包。

 1.1.RPM 安装脚本

#!/bin/bash
cmdPlay=$(rpm -q httpd)
tools=""
echo "开始查找httpd。。。"
if [[ $cmdPlay == 未* ]];then
    exStar= $(mount /dev/cdrom/mnt)
    sleep 3s
    echo="挂载中"
    exLL=$(ls -l /mnt/Packages | wc -l)
    if [[ $exLL > 0 ]];then
     echo "挂载完成"
     $(rpm -ivh /mnt/Packages/httpd-tools-2.*.rpm)
     $(rpm -ivh /mnt/Packages/mailcap-2.*.rpm)
       sleep 5s
     cx=$(rpm -q httpd-tools)
     ct=$(rpm -q mailcap)
     resultx=""
        if [[ $cx == 未*  ]];then
          resultx= "未找到依赖包tools"

        elif [[ $ct == 未* ]];then
          resultx= "未找到依赖包mailcap"

        elif [[ $ct != 未*  ]] &&  [[ $cx != 末*  ]];then
           echo "依赖包安装完成,开始安装httpd服务包。。" 
                $(rpm -ivh /mnt/Packages/httpd-2.*.rpm)
                sleep 5s
              echo "httpd安装完成,开始启动服务 "
              tools=$(systemctl start httpd)
               xl=$(netstat -antp | grep 80)
               echo "$tools ----  $xl"
         else
              echo "$resultx"

         fi
    fi
else
   echo "httpd 服务已经存在"
   echo "$cmdPlay"

1.2 RPM 脚本分析

         根据以脚本,我们可以从以下几个方面进行入手:

        (1)代码的可复用性:以上代码的复用性很差,没有可调用的函数。

        (2)代码的执行效率:执行效率相对较低,其中sleep 方法使用过于频繁,容易造成执行缓慢。

        (3)代码逻辑性:代码中sleep的方式为了让上一步的命令执行完成后,再执行下一步,那么如果sleep时间已过,上一步依旧未执行完,该如何处理。

 1.2.RPM 脚本优化

#!/bin/bash
#
#此处不做判断,已经挂载或者未挂载,都可以再此挂载一次。
function MountP(){
  mount /dev/cdrom /mnt
}
#公用检测方式
function Checking()
{
  if [ -d "/mnt/Packages"  ];then
   rpm -$1 $2 &>/dev/null
   if [[ "$?" = 0 ]];then
        return
    else
        return 1
    fi
   else
      echo "挂载的文件不存在!"
 fi
}

#检测并安装依赖包
function installTools(){
     Checking q httpd-tools && echo "httpd-tools服务已经安装完毕" || `rpm -vih /mnt/Packages/httpd-tools-2.*.rpm &>/dev/null`
     Checking q mailcap && echo "mailcap服务已经安装完毕" || `rpm -vih /mnt/Packages/mailcap-2*.rpm &>/dev/null`

}
#检测并安装RPM主服务
function installRPM(){
  Checking q httpd && echo "httpd服务已经安装完毕" || `rpm -vih /mnt/Packages/httpd-2.*.rpm &>/dev/null`
}
#先执行 依赖包安装,wait是等待上个函数执行完成后,再执行RPM主服务的安装,确保依赖包已经完成安装。
MountP && wait  && installTools && wait &&  installRPM

1.3.性能对比

使用原来的脚本执行安装,耗时在13秒左右

使用优化后的脚本安装,耗时不到1秒,以毫秒级别计算。

本文是rpm的安装脚本,至于yum的安装脚本,本人正在整理中,但是方式方法都差不多,唯一不同的是,有一些文件修改的方式,后续将会编辑发布。

以上是关于linux rpm自动化安装脚本编写及优化的主要内容,如果未能解决你的问题,请参考以下文章

Shell ❀ Linux系统自动挂载本地yum源并安装rpm依赖包

Shell ❀ Linux系统自动挂载本地yum源并安装rpm依赖包

Shell ❀ Linux系统自动挂载本地yum源并安装rpm依赖包

linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

Linux运维每天都做啥工作

Linux系统最小化安装之后的系统基础环境安装以及内核优化脚本