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学习之matplotlib绘制散点图实例
Dec 09 Python
python判断完全平方数的方法
Nov 13 Python
Python 判断奇数偶数的方法
Dec 20 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
Python: glob匹配文件的操作
Dec 11 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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
模拟xcopy的函数
2006/10/09 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP编程函数安全篇
2013/01/08 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
javascript 一些用法小结
2009/09/11 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
使用python实现rsa算法代码
2016/02/17 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python文件的读写和异常代码示例
2017/10/31 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
大学生村官工作感言
2014/01/10 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
2015年国庆节广播稿
2015/08/19 职场文书