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 相关文章推荐
Python连接mssql数据库编码问题解决方法
Jan 01 Python
python删除列表中重复记录的方法
Apr 28 Python
Python操作串口的方法
Jun 17 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
python3 拼接字符串的7种方法
Sep 12 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
python 二维数组90度旋转的方法
Jan 28 Python
python图像处理入门(一)
Apr 04 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
解决Python二维数组赋值问题
Nov 28 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
Python新手学习raise用法
Jun 03 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 7.4中使用预加载的方法详解
2019/07/08 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
深入理解Webpack 中路径的配置
2017/06/17 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python tornado使用流生成图片的例子
2019/11/18 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
文职个人求职信范文
2013/09/23 职场文书
幼儿教师工作感言
2014/02/14 职场文书
教师党员一句话承诺
2014/03/28 职场文书
励志演讲稿200字
2014/08/21 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
居住证明范文
2015/06/17 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python