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进行稳定可靠的文件操作详解
Dec 31 Python
python显示天气预报
Mar 02 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
Python 中的with关键字使用详解
Sep 11 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
python文档字符串(函数使用说明)使用详解
Jul 30 Python
详解python中的index函数用法
Aug 06 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 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抓取页面与代码解析 推荐
2010/07/23 PHP
php中curl使用指南
2015/02/05 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
对象的类型:本地对象(1)
2006/12/29 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
结束运行python的方法
2020/06/16 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
数控技术应届生求职信
2013/11/13 职场文书
财务经理的岗位职责
2013/12/17 职场文书
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
一年级班主任寄语
2014/01/19 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript