脚本备份:mcremotecall.py

#!/usr/bin/python26
# -*- coding:utf-8 -*-
#author=ww
#date=2014-04-16

import func.overlord.client as fc
import re,sys,subprocess
from time import sleep

def lShell(arg1, cmd):
	if arg1 == 'c':
		rtn = subprocess.call(cmd, shell=True)
	elif arg1 == 'p':
		r_rtn = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
		rtn = r_rtn.stdout.read()
	
	return rtn
	

def checkCMD(CMD):
	CMD = CMD.strip()
	if len(re.findall(r'rm\s+\-rf\s+\/', CMD)):
		print "ERROR!! This Command Forbidden!"
		sys.exit()
	
	return CMD

def checkHost(HOSTS):
	HOSTS = HOSTS.strip().split(';')	

	for i in range(len(HOSTS)):
		HOSTS[i] = HOSTS[i].strip()
		if len(re.findall(r'@', HOSTS[i])):
			pass
		elif len(re.findall(r'qeedoo\.com', HOSTS[i])):
			pass
		else:
			HOSTS[i] += ".qeedoo.com"

	HOSTS = ";".join(HOSTS)
	return HOSTS
			
def exeCMD(HOSTS, CMD):
	if CMD == 'ping':
		RESULT = HOSTS.test.ping()
		for i in sorted(RESULT.keys()):
			if RESULT[i] == 1: 
				print "\33[33;49;4m%s\33[39;49;0m\t\33[32;49;1m%s\33[39;49;0m\n" % (i, "[ OK ....]")
			else:
				print "\33[33;49;4m%s\33[39;49;0m\t\33[31;49;1m%s\33[39;49;0m\n" % (i, "[ FAILED ]")
	else:
		RESULT = HOSTS.command.run(CMD)
	
		print "\n------------------------------------- information -------------------------------------"
		for i in sorted(RESULT.keys()):
			sleep(1)
			if RESULT[i][0] == 0: 
				if RESULT[i][1].strip():
					print "\33[33;49;4mRemoteHost:\33[39;49;0m \33[35;49;1m%s\33[39;49;0m\n%s" % (i, RESULT[i][1])
				else:
					print "\33[33;49;4mRemoteHost:\33[39;49;0m \33[35;49;1m%s\33[39;49;0m\n%s" % (i, "Command Execute Sucess.")
			else:
				print "\33[33;49;4mRemoteHost:\33[39;49;0m \33[35;49;1m%s\33[39;49;0m\n%s" % (i, RESULT[i][2])

if __name__ == "__main__":
	HOSTS = checkHost(sys.argv[1])
	
	try:
		HOSTS = fc.Overlord(HOSTS, nforks=5)
	except Exception,e:
		print "\33[31;49;2mERROR!!\33[39;49;0m %s" % str(e)
		sys.exit()

	CMD = checkCMD(sys.argv[2])
	exeCMD(HOSTS, CMD)

脚本备份:mcremotecall.py

你可能感兴趣的:(脚本备份:mcremotecall.py)