python3 自动打印出最新版本执行的mysql2redis实例


Posted in Python onApril 09, 2020

我就废话不多说了,直接看代码吧!

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 输出 mysql2redis 命令
# __author__ = caozhi
# create_time 2018-11-12,update_time 2019-12-12
# version = 2.0

import os
import re
import sys
import time
import fcntl
import subprocess
import requests

ip = "8.8.8.8"
urlnginxA = "http://8.8.8.8:81/version"
urlnginxB = "http://8.8.8.8:82/version"
defaultversion = {"module":"nginx","ver":"v0.0.0"}

def ApplicationInstance():
  global pidfile
  pidfile = open(os.path.realpath(__file__), "r")
  try:
    fcntl.flock(pidfile, fcntl.LOCK_EX | fcntl.LOCK_NB) #创建一个排他锁,并且所被锁住其他进程不会阻塞
    #print('continue...')
  except:
    print('error', 'The script was executed many times...')
    sys.exit(1)

def getversion(url):
  try:
    nginx_response = requests.get(url, timeout=3)
    if nginx_response.status_code == 200:
      data=nginx_response.json()
    else:
      print('\033[31m 接口响应非200,请重新确认执行,默认忽略本次接口的相应 %s http_code:%s\033[0m'%(url, nginx_response.status_code))
      data = defaultversion

except Exception as e:
  print('\033[31m 接口建联失败,请重新确认,默认忽略本次接口的相应 %s \033[0m'%url)
  print(e)
  data = defaultversion

finally:
  return data

def nginx_version(data):
  version = data['ver'].split('v')[1]
  return version

if __name__ == '__main__':
  ApplicationInstance()
  nginxA_data = getversion(urlnginxA)
  nginxB_data = getversion(urllnginxB)
  print('\033[33m nginxA_version \033[0m %s'%nginxA_data)
  print('\033[33m nginxB_version \033[0m %s'%nginxB_data)

versionA = nginx_version(nginxA_data)
versionB = nginx_version(nginxB_data)
d0=re.split('\.', versionA)
d2=re.split('\.', versionB)
d0=[int(d0[i]) for i in range(len(d0))]
d2=[int(d2[i]) for i in range(len(d2))]
print()

if(d0>d2):
  print('\033[35m nginxA \033[0m这个版本大 v{}'.format(versionA))
  print('\033[36m********* ↓ 这是要执行的mysql2redis的命令 请手动执行↓ ********* \033[0m')
  print('ssh {} "curl -v http://127.0.0.1:81/mysql2redis"'.format(ip))
if(d0<d2):
  print('\033[35m nginxB \033[0m这个版本大 v{}'.format(versionB))
  print('\033[36m********* ↓ 这是要执行的mysql2redis的命令 请手动执行↓ ********* \033[0m')
  print('ssh {} "curl -v http://127.0.0.1:82/mysql2redis"'.format(ip))
if(d0==d2):
  print('\033[35m nginxA和nginxB \033[0m版本一样大 v{}'.format(versionA))
  print('\033[36m********* ↓ 这是要执行的mysql2redis的命令 请手动执行↓ ********* \033[0m')
  print('ssh {} "curl -v http://127.0.0.1:81/mysql2redis"'.format(ip))
print()

补充知识:mysql2redis中LTRIM命令没有效果,用eval命令解决

mysql2redis是一个可以在mysql中执行redis命令的第三方插件,昨天在用它调用命令LTRIM时没有效果:

redis_command_v2('LTRIM', 'UserReadingRecord1', 0, 9)

今天用eval命令试了一下,成功了,哈哈:

redis_command_v2('eval', "redis.call('ltrim', 'UserReadingRecord1', 0, 9)", '0')

以上这篇python3 自动打印出最新版本执行的mysql2redis实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
python中的代码编码格式转换问题
Jun 10 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
python xlwt如何设置单元格的自定义背景颜色
Sep 03 Python
Python pandas库中的isnull()详解
Dec 26 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python实现处理mysql结果输出方式
Apr 09 #Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 #Python
python数据分析工具之 matplotlib详解
Apr 09 #Python
使用python检查yaml配置文件是否符合要求
Apr 09 #Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 #Python
python实现简单学生信息管理系统
Apr 09 #Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 #Python
You might like
PHP运行模式的深入理解
2013/06/03 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python实现最大子序和的方法示例
2019/07/05 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Pytorch to(device)用法
2020/01/08 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
python3注册全局热键的实现
2020/03/22 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
c语言常见笔试题总结
2016/09/05 面试题
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
环卫工人慰问信
2015/02/15 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书