运维小脚本

记录一些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))  

后期更新。。。

 

posted @ 2018-06-14 00:15  黑色彩虹  阅读(236)  评论(0编辑  收藏  举报