#!/usr/bin/python # -*- coding: utf-8 -* from fabric.api import * from fabric.contrib.files import * ## 需要注意的是,这里的host strings必须由username@host:port三部分构成,缺一不可,否则运行时还是会要求输入密码 env.hosts = [ 'root@2.21.103.123', ] env.passwords = { 'root@2.21.103.123:22': '111111', } env.sdir="/data/soft/soft/" env.username = 'wangteng' env.email = 'wangteng@qq.cn' env.gitlab_url = 'http://git.qqq.cn/qq_devops/zq.git' def test_exist_dir(): # 检查仓库是否已经存在 if int(run(" [ -e '%s' ] && echo 11 || echo 10" % env.sdir)) == 11: result = True else: result = False return result @task def git_config(): # 配置git,这个配置只需一次就好 try: run('git config --global user.name "%s"'%env.username) run('git config --global user.email "%s"'%env.email) run('git remote add origin %s'%env.gitlab_url) except: pass def make_dir(): # 如果目录不存在,则创建目录,初始化为仓库,并将代码下载到仓库 run('mkdir -p %s;git init'%(env.sdir,)) git_config() run('cd %s;git clone %s'%(env.sdir,env.gitlab_url)) def get_file(): # 如果仓库存在,进行代码更新 dir_name = env.sdir+env.gitlab_url.split('/')[-1].split('.')[0] run('cd %s;git pull'%dir_name) @task def start(): flag = test_exist_dir() if flag: get_file() else: make_dir() @task def no_username_password(): run('cd /;git config --global credential.helper store') # fab -f test_fabric.py start --hide status,running,stdout,user,aborts,warnings,stderr 忽略所有输出