• 一个python脚本解决安装mq的依赖问题


    import tarfile
    import sys,os
    from _utils.patrol2 import run_cmd
    import zipfile
    
    
    
    
    def get_version(filename):
        cmd="rpm -U {}".format(filename)
        code,res=run_cmd(cmd,cwd=pkg_unzip_path)
        if 'is already installed' in res or '已安装' in res:
            return True
        else:
            return False
    
    
    def install_pkg(filename):
        cmd = "yum -y localinstall {}".format(filename)
        code,res=run_cmd(cmd,cwd=pkg_unzip_path)
        if code:
            print res
            sys.exit(1)
        if get_version(filename):
            return True
        else:
            return False
    
    
    def extract(tar_path, target_path):
        try:
            tar = tarfile.open(tar_path, "r:gz")
            file_names = tar.getnames()
            for file_name in file_names:
                tar.extract(file_name, target_path)
            tar.close()
        except Exception, e:
            print Exception, e
            sys.exit(1)
    
    
    def search(path, word):
        for filename in os.listdir(path):
            fp = os.path.join(path, filename)
            if os.path.isfile(fp) and word in filename:
                return filename
            elif os.path.isdir(fp):
                search(fp, word)
        return False
    
    
    def unpack_zip(filename, destpath, fix_path=None):
        zf_obj = zipfile.ZipFile(filename)
        if destpath.endswith(':'):
            destpath = destpath + os.sep
        zf_obj.extractall(path=destpath)
        zf_obj.close()
    
        if fix_path:
            destpath = os.path.join(destpath, fix_path)
        return destpath
    
    
    if pkg_file.endswith('.gz'):
        extract(pkg_file, pkg_unzip_path)
    elif pkg_file.endswith('.zip'):
        pkg_name=pkg_name.split('.zip')[0]
        pkg_unzip_path=unpack_zip(pkg_file, pkg_unzip_path,fix_path=pkg_name)
    print '-->解压成功'
    
    
    
    code,res=run_cmd('chmod 755 ./lap/jre/jre/bin/java', cwd=pkg_unzip_path)
    if code:
        print 'java执行权限赋权失败',res
        sys.exit(1)
    else:
        print 'java执行权限赋权成功'
    
    
    #接受授权认证
    cmd = "sh mqlicense.sh<<EOF
    1
    EOF"
    code,res = run_cmd(cmd,cwd=pkg_unzip_path)
    if code:
        print res
        sys.exit(1)
    else:
        print res
    print '-->权限认证成功'
    
    #1、安装系统依赖包
    print '开始安装rpm包,请等待'
    names=["MQSeriesRuntime","MQSeriesSDK","MQSeriesJava","MQSeriesClient","MQSeriesSamples","MQSeriesServer"]
    for name in names:
        filename=search(pkg_unzip_path, name)
        if not filename:
            print '{}相关的包不存在'.format(name)
            sys.exit(1)
        elif get_version(filename):
            print '{}已安装'.format(filename)
        elif filename and not get_version(filename):
            res=install_pkg(filename)
            if res:
                print '安装{}成功'.format(filename)
            else:
                print '安装{}失败'.format(filename)
                sys.exit(1)
    print '-->依赖包安装成功'
    
    #2、修改系统limits参数
    with open('/etc/security/limits.conf','a') as f:
        f.write("mqm soft nofile 10240
    mqm hard nofile 10240
    mqm soft nproc 4096
    ")
    print '-->修改系统limits参数成功'
    #3、修改系统核心参数
    with open('/etc/sysctl.conf','a') as f:
        f.write("kernel.sem = 500 256000 250 1024
    fs.file-max = 524288
    net.ipv4.tcp_keepalive_time = 300
    ")
    
    cmd = "sysctl -p"
    code,res=run_cmd(cmd,cwd=pkg_unzip_path)
    if 'kernel.sem = 500 256000 250 1024
    fs.file-max = 524288
    net.ipv4.tcp_keepalive_time = 300' in res:
        print '-->修改系统核心参数成功' 
    else:
        print '-->修改系统核心参数失败'
        sys.exit(1)
    

      

  • 相关阅读:
    107.JsonResponse
    106.HttpResponse对象详解
    前端学习笔记系列一:2 Vue的单文件组件
    前端学习笔记系列一:1.export default / export const
    @vue-cli的安装及vue项目创建
    Github版本控制系统
    C# 篇基础知识11——泛型和集合
    C# 篇基础知识10——多线程
    C# 篇基础知识9——特性、程序集和反射
    C# 篇基础知识8——正则表达式
  • 原文地址:https://www.cnblogs.com/slqt/p/9007063.html
Copyright © 2020-2023  润新知