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\n1\nEOF"
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\nmqm hard nofile 10240\nmqm soft nproc 4096\n")
print '-->修改系统limits参数成功'
#3、修改系统核心参数
with open('/etc/sysctl.conf','a') as f:
f.write("kernel.sem = 500 256000 250 1024\nfs.file-max = 524288\nnet.ipv4.tcp_keepalive_time = 300\n") cmd = "sysctl -p"
code,res=run_cmd(cmd,cwd=pkg_unzip_path)
if 'kernel.sem = 500 256000 250 1024\nfs.file-max = 524288\nnet.ipv4.tcp_keepalive_time = 300' in res:
print '-->修改系统核心参数成功'
else:
print '-->修改系统核心参数失败'
sys.exit(1)

  

一个python脚本解决安装mq的依赖问题的更多相关文章

  1. Python脚本之安装linux源码包-Jenkins

    最近开始学Python,按照网上的教程,写了一个Python脚本下载Jenkins并运行的脚本,很简单. 首先使用vi命令编辑一个新文件auto_built_jenkins.py(关于vi的使用可以见 ...

  2. 如何手动写一个Python脚本自动爬取Bilibili小视频

    如何手动写一个Python脚本自动爬取Bilibili小视频 国庆结束之余,某个不务正业的码农不好好干活,在B站瞎逛着,毕竟国庆嘛,还让不让人休息了诶-- 我身边的很多小伙伴们在朋友圈里面晒着出去游玩 ...

  3. 写一个python脚本监控在linux中的进程

    在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for= ...

  4. 【Python脚本】Python创建删除文件-----------我的第一个Python脚本

    Python相对C++和Java来说,是解释性语言,非常适合来编写脚本. 很久之前就开始学习Python的语法了,今天写了第一个Python的脚本,来简化我的一些日常工作. 我平时学习的时候喜欢新建一 ...

  5. 编写一个python脚本功能-备份

    版本一 解决方案当我们基本完成程序的设计,我们就可以编写代码了,它是对我们的解决方案的实施.版本一例10.1 备份脚本——版本一 #!/usr/bin/python # Filename: backu ...

  6. 解决安装rpm包依赖关系的烦恼 - yum工具介绍及本地源配置方法

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  7. Python编写一个Python脚本

    我想要一个可以为我的所有重要文件创建备份的程序.(下面测试环境为python2.7) 1.backup_ver1.py #!/usr/bin/python import os import time ...

  8. 从0开始的Python学习013编写一个Python脚本

    通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本. 问题 需求: 我想要一个可以给我备份重要文件的程序. 需求分析: 首先文件是有存储路径,文件的路径和 ...

  9. python学习(一)运行第一个python脚本

    当然这里指的是在linux或者unix下,像写bash脚本那样 #!/usr/bin/python print('The Bright Side ' + 'of Life...') 反正我建议就算一开 ...

随机推荐

  1. Eclipse 插件Maven在使用 add dependency,找不到包,解决办法

    通过右键单击pom.xml文件选择maven –> add dependency 或者是打开pom.xml文件,选择dependencies –>add 时,搜索不到依赖的jar包,解决方 ...

  2. Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path

    http://codeforces.com/contest/1072/problem/D bfs 走1步的最佳状态 -> 走2步的最佳状态 -> …… #include <bits/ ...

  3. poj 1330(RMQ&LCA入门题)

    传送门:Problem 1330 https://www.cnblogs.com/violet-acmer/p/9686774.html 参考资料: http://dongxicheng.org/st ...

  4. echarts2 饼图处理标签文字过长使之达到指定字数换行的目的

    在使用echarts2的过程中,有时会遇到标签文字过长导致显示不完整的问题.例如: 这时候就需要用到 标签里的formatter 回调函数来处理这种情况了. 方式一:  formatter : ' { ...

  5. Hadoop+HBase+Spark+Hive环境搭建

    杨赟快跑 简书作者 2018-09-24 10:24 打开App 摘要:大数据门槛较高,仅仅环境的搭建可能就要耗费我们大量的精力,本文总结了作者是如何搭建大数据环境的(单机版和集群版),希望能帮助学弟 ...

  6. Excel:LOOKUP函数的经典用法

    1.逆向查询 下面这个表中,A:C列是员工基础信息表,分别是部门.姓名和职务. ​现在要根据E5单元格中的员工姓名,在这个信息表中查询属于哪个部门,也就是咱们常说的逆向查询,就可以使用LOOKUP函数 ...

  7. How the Bitcoin protocol actually works

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  8. Linux集群部署自定义时间同步服务器(ntpd)

    Linux集群部署自定义时间同步服务器(ntpd) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为一名运维人员,在搭建集群的时候,第一步需要做的就是同步每个机器的时间,尤其是在 ...

  9. python---tornado初识(2)实现登录和发布文章

    # coding:utf8 # __author: Administrator # date: 2018/3/6 0006 # /usr/bin/env python import tornado.i ...

  10. javascript 5秒后关闭广告案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...