fabric 使用

#!/usr/bin/env python
# _*_coding:utf-8_*_
import time
from fabric.api import env, cd, run, put, parallel, task
import StringIO
ct = [
    "124.239.180.215",  # sjz ct
    "117.23.58.131",  # xi'an ct
    "10.18.0.33",  # shen yang ct db3
    #"116.31.75.161",  # gd ct
    "171.11.231.177",  # luo yang ct
    "220.167.100.94",  # de yang ct
]
bgp =[
    "120.92.5.115",  # jin shan bj03 bgp
    "120.92.230.76",  # jin shan sh02 bgp
    "139.196.12.110",  # ali sh01 bgp
    "106.3.145.210", # bj01 dns01 bgp
]
a = [
    # ct
    "124.239.180.215",  # sjz ct
    "117.23.58.131",  # xi'an ct
    # cnc
    "157.255.41.13",  # gong zhou cnc
    "10.18.0.36",  # shen yang cnc db6
    # cmnet
    "120.92.5.115",  # jin shan bj03 bgp
    "120.92.230.76",  # jin shan sh02 bgp
    "139.196.12.110",  # ali sh01 bgp
    "106.3.145.210", # bj01 dns01 bgp
]
new_probe = [
    "42.81.84.36:10012",  # tianjin ct
    "221.235.156.22:10012", #hubei suizhou ct
    "59.49.86.51:10012", # shanxi taiyuan ct
    "124.161.207.115:10012", # sichuan deyang cnc
    "123.138.65.25:10012",  # shanxi  xian  cnc
    "111.62.253.61:10012", #hebei cmnet
    "111.20.246.90:10012", #shanxi xian cmnet
    "223.112.138.14:10012",  # jiangsu wuxi cmnet
    "124.236.102.29:10012",  # hebei ct
]
b = [
    # ct
    "10.20.0.14",  # jin hua ct db4
    "10.18.0.33",  # shen yang ct db3
    "116.31.75.161",  # gd ct
    # cnc
    "61.55.189.125",  # sjz cnc
    "153.37.74.196",  # yan cheng cnc
    "153.36.110.108",  # xuzhou cnc
    # cmnet
    "120.221.70.209",  # qing dao cmnet
    "117.169.75.234",  # nan chang cmnet
    "10.20.0.12",  # jin hua cmnet db2
]

c = [
    # ct
    "171.11.231.177",  # luo yang ct
    # "10.82.0.3",  # sd ji nan ct  单独发布 需要开iptables权限
    "220.167.100.94",  # de yang ct
    # cnc
    # "211.91.140.25",  # e zhou cnc 下架不能使用了
    "124.161.178.152",  # zi gong cnc
    # "10.82.0.24",  # shan dong ji nan cnc 单独发布 需要开iptables权限
    # "123.138.23.149",  # xi an cnc 机房搬迁不用了
    "127.0.0.1",  # jin hua cnc  db5 # "10.20.0.15",
    # cmnet
    "112.29.176.11",  # he fei cmnet
    "183.232.68.8",  # guangzhou cmnet
    "117.172.20.28",  # cheng du cmnet
]
d = [
    "10.82.0.3",
    "10.82.0.24"
]

exp = [
    "120.221.70.209", # qingdao cmnet
]

env.hosts = new_probe

class FabricException(Exception):
    pass
env.abort_exception = FabricException

def ll_tail():
    output = StringIO.StringIO()
    try:
        run("df -h")
    except FabricException as e:
        print "error:", e
        print "output:", output.getvalue()


def judge_file():
    output = StringIO.StringIO()
    try:
        run("[ -f /home/work/prober/src/probe/cdn_prober_v2.py ] && echo 'yes file exist' || echo 'no file not exist'")
        #run('ls -l /home/work/prober/src/probe/cdn_prober_v2.py')
        #run('grep -E "orig|\-\|" /home/work/prober/src/probe/cdn_prober_v2.py|wc -l')
    except FabricException as e:
        print "error:", e
        print "output:", output.getvalue()


def put_file():
    output = StringIO.StringIO()
    try:
        #run ('mkdir -p /home/work/')
        #with cd('/home/work/'):
        with cd('/home/work/prober/log/'):
            #put('prober.tar.gz', '/home/work/')
            #put('log_manager.py', '/home/work/prober/src/lib')
            #run('tar xf prober.tar.gz')
            run('rm -f probe_v2.log.*')
            run('ls')
    except FabricException as e:
        print e
        print output.getvalue()

def put_tdfile():
    output = StringIO.StringIO()
    try:
        with cd('/etc/td-agent/'):
            #run('\cp td-agent.conf /etc/td-agent/td-agent.conf_$(date +%F)')
            #run('ls /etc/td-agent/')
            #put('td-agent.conf', '/etc/td-agent/')
            #run('ls /etc/td-agent/')
            run('ps -ef |grep td-agent|grep -v grep')
            run('service td-agent restart')
            run('ps -ef |grep td-agent|grep -v grep')
            #run('ls -l /home/work/prober/src/probe/cdn_prober_v2.py')
            #ret = run('grep -E "orig|\-\|" /home/work/prober/src/probe/cdn_prober_v2.py|wc -l')
    except FabricException as e:
        print e
        print output.getvalue()


def deploy():
    output = StringIO.StringIO()
    try:
        run("ps aux |grep 'cdn_prober_v2.py' |grep -v 'grep' | awk '{print $2}' | xargs kill -9")
        with cd("/home/work/prober/src/probe"):
            file = "cdn_prober_v2.py"
            now = time.time()
            left = now % 60
            if left >= 58 or left == 0:
                ts = now - left + 120
            else:
                ts = now - left + 60

            cron_time = time.strftime("%M %H %d %m", time.localtime(ts))
            print cron_time
            cron_str = "echo '%s * cd /home/work/prober/src/probe && nohup python %s &' >>  /var/spool/cron/root" % (
            cron_time, file)
            run(cron_str)
    except FabricException as e:
        print e
        print output.getvalue()


def check_cron():
    output = StringIO.StringIO()
    try:
        run("crontab -l |tail -1")
    except FabricException as e:
        print e
        print output.getvalue()

def check_proc():
    output = StringIO.StringIO()
    try:
        run("ps aux |grep 'cdn_prober_v2.py' |grep -v 'grep'")
    except FabricException as e:
        print e
        print output.getvalue()


# @parallel(pool_size=5)
def test():
    ll_tail()
    judge_file()
def put_f():
    put_file()
def dep():
    deploy()
def check():
    check_cron()
    check_proc()
def put_td():
    put_tdfile()

 

posted @ 2017-06-23 16:45  众里寻,阑珊处  阅读(173)  评论(0)    收藏  举报
返回顶部