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利用ansible分发处理任务
Aug 04 Python
Python时间模块datetime、time、calendar的使用方法
Jan 13 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 Python
pandas 对group进行聚合的例子
Dec 27 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Python爬虫回测股票的实例讲解
Jan 22 Python
Python机器学习之逻辑回归
May 11 Python
深入理解Pytorch微调torchvision模型
Nov 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
js数字转换为float,取N位小数
2014/02/08 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
python fabric实现远程部署
2017/01/05 Python
Django 用户认证组件使用详解
2019/07/23 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
总裁办公室主任职责
2014/01/02 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB