aios/tools/hape/hape_libs/commands/dp_cmd.py (25 lines of code) (raw):
# -*- coding: utf-8 -*-
from .common import *
from hape_libs.utils.logger import Logger
import logging
import click
import subprocess
import sys
@click.command()
@click.option("--ip", required=True, help="List of ip, seperated by ','")
@click.option("--source", required=True, help="Source File or directory to be deploy")
@click.option("--target", required=True, help="Target path of file or directory in remote servers")
def dp(ip, source, target):
'''
Deploy files to multiple servers
'''
Logger.init_stdout_logger(logging.INFO)
iplist = ip.split(",")
ip_to_procs = {}
for ip in iplist:
command = "rsync -r -v {} {}:{}".format(source, ip, target)
proc = subprocess.Popen(command, shell=True, stdout=sys.stdout, stderr=sys.stderr)
ip_to_procs[ip] = proc
for ip in iplist:
proc = ip_to_procs[ip]
Logger.info("Wait ip:{} finish".format(ip))
proc.communicate()