zoukankan      html  css  js  c++  java
  • 运维小脚本

    记录一些python脚本。能看懂则借鉴吧,不能看懂别勉强!!!

    1、启动java应用服务:

    #!/usr/bin/env python
    # coding: utf-8
    import os
    import time
    import socket
    import subprocess
    
    
    class JavaServer:
        def __init__(self, command, port):
            self.command = command
            self.port = port
            self.server_start_all()
    
        def server_start_all(self):
            fnull = open(os.devnull, 'w')
            result = subprocess.call(self.command, shell=True, stdout=fnull, stderr=fnull)
            current_time = time.strftime('%Y%m%d-%H%M%S', time.localtime())
            time.sleep(1)  # 延迟1秒
            if result:
                print('时间:{}---执行命令:{} 失败'.format(current_time, self.command))
                return False
            else:
                print('时间:{}---执行命令:{} 成功'.format(current_time, self.command))
                self.check_aliveness()
            fnull.close()
    
        def check_aliveness(self):
            hostname = socket.gethostname()  # 获取主机名
            ip = socket.gethostbyname(hostname)  # 获取主机ip地址
            sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sk.settimeout(1)
            try:
                sk.connect((ip, self.port))
                print('server:{} 端口:{} is OK '.format(ip, self.port))
                self.server_port = 'ok'
            except Exception:
                print('sever:{} 端口:{} is NOT OK '.format(ip, self.port))
                return False
            finally:
                sk.close()
    
    
    if __name__ == '__main__':
        command_list = [['/usr/local/zookeeper-3.4.6/bin/zkServer.sh start', 3888],
                        ['sh /usr/java/account/bin/startup.sh &', 20678],
                        ['sh /usr/java/order/bin/startup.sh &', 20999],
                        ['sh /usr/java/user/bin/startup.sh &', 20001],
                        ['sh /usr/java/system/bin/startup.sh &', 20888]
                        ]
    
        while True:
            for i in command_list:
                st = JavaServer(i[0], i[1])
                print(st.__dict__)
                if st.__dict__['server_port'] == 'ok':
                    pass
                else:
                    print('服务:{}开启失败'.format(i[0]))
                    break
            break
    

    2、利用pymysql结合协程快速创建3000万条测试数据 

    import pymysql
    import gevent
    import time
    
    class MyPyMysql:
        def __init__(self, host, port, username, password, db, charset='utf8'):
            self.host = host
            self.port = port
            self.username = username
            self.password = password
            self.db = db
            self.charset = charset
            self.pymysql_connect()
    
        def pymysql_connect(self):
            self.conn = pymysql.connect(host=self.host,
                                   port=self.port,
                                   user=self.username,
                                   password=self.password,
                                   db=self.db,
                                   charset=self.charset
                                   )
            self.asynchronous()
    
        def run(self, nmin,nmax):
            self.cur = self.conn.cursor()
            sql = "insert into userinfo(id,name,gender,email) values (%s,%s,%s,%s)"
    
            data_list = []
            for i in range(nmin, nmax):
                result = (i, 'zhangsan' + str(i), 'male', 'zhangsan' + str(i) + '@qq.com')
                data_list.append(result)
            content = self.cur.executemany(sql, data_list)
            if content:
                 print('成功插入第{}条数据'.format(nmax))
            else:
                 print('3000万数据插入完毕')
            self.conn.commit()
    
    
        def asynchronous(self):
            g_l = [gevent.spawn(self.run, i, i+10000) for i in range(1, 30000001, 10000)]
            gevent.joinall(g_l)
            self.cur.close()
            self.conn.close()
    
    
    if __name__ == '__main__':
        start_time = time.time()
        st = MyPyMysql('192.168.11.200', 3306, 'root', 'root', 'db2')
        print('程序耗时{:.2f}'.format(time.time() - start_time))  

    后期更新。。。

  • 相关阅读:
    js检验文件格式
    java判空工具类
    $(document).ready() 是个什么函数?为什么要用它?
    Maven 手动添加jar
    java深克隆
    cors跨域详解
    常见异常类总结
    Spring事务回滚机制
    Java获取13位毫秒级时间戳
    JSON 字符串转换为 Map
  • 原文地址:https://www.cnblogs.com/Black-rainbow/p/9180945.html
Copyright © 2011-2022 走看看