def put_file(self, fileput): if not self.file_exist(fileput): return False try: log_time = time.strftime("%Y-%m-%d %H:%M:%S") print "Connecting %s..." % fileput['ip'] socket.setdefaulttimeout(5) t = paramiko.Transport((fileput['ip'], fileput['port'])) t.connect(username=fileput['username'], password=fileput['passwd']) sftp = paramiko.SFTPClient.from_transport(t) sftp.put(fileput['file2put'], fileput['file2save']) t.close() except IOError: error_msg = fileput['file2save'] + " is wrong." ReportLog.send_results( False, "[ERROR %s]: upload %s to %s" % (log_time, fileput['file2put'], fileput['ip']), des_str=error_msg) return False except Exception, e: ReportLog.send_results( False, "[ERROR %s]: upload %s to %s" % (log_time, fileput['file2put'], fileput['ip']), des_str=str(e)) return False
def read_local_conf(self): conf_file = "./conf/volcano.conf" tmp_conf_file = "./conf/volcano.conf.tmp" if not os.path.exists(conf_file): ReportLog.sys_info("%s does not exists !"%(conf_file)) cmd = "sed \'/^$/D\' %s | grep -v \"^[[:blank:]]*#\" > %s"%(conf_file,tmp_conf_file) os.system(cmd) fd = open(tmp_conf_file) self.hosts_list = [] while True: hosts = {} line = fd.readline() if not line : break hosts['ip'] = line.split()[0] hosts['passwd'] = line.split()[1] hosts['port'] = 22 hosts['username'] = "******" # put_dir_test(hosts) exec_cmd_test(hosts) self.hosts_list.append(hosts) fd.close() os.system("rm -f %s"%tmp_conf_file) return self.hosts_list
def exec_cmd(self,exec_cmd): try : # print exec_cmd['ip'],exec_cmd['passwd'] # print "\n" print "\nConnecting %s..."%exec_cmd['ip'] log_time = time.strftime("%Y-%m-%d %H:%M:%S") socket.setdefaulttimeout(2) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(exec_cmd['ip'],exec_cmd['port'],exec_cmd['username'],exec_cmd['passwd']) print "Connected %s Successfully..."%exec_cmd['ip'] stdin, stdout, stderr = ssh.exec_command(exec_cmd['cmd2exec']) err_message = stderr.read() if err_message: print err_message ReportLog.send_results(True,"[INFO %s]: execute [%s] on %s"%(log_time,exec_cmd['cmd2exec'],exec_cmd['ip']),des_str=err_message) return True ok_message = stdout.read() ReportLog.send_results(True,"[INFO %s]: execute [%s] on %s"%(log_time,exec_cmd['cmd2exec'],exec_cmd['ip']),des_str=str(ok_message)) ssh.close() except socket.timeout: ReportLog.send_results(False,"[ERROR %s]: execute [%s] on %s"%(log_time,exec_cmd['cmd2exec'],exec_cmd['ip']),des_str="%s Connection timed out"%(exec_cmd['ip'])) return False except socket.error: ReportLog.send_results(False,"[ERROR %s]: execute [%s] on %s"%(log_time,exec_cmd['cmd2exec'],exec_cmd['ip']),des_str="%s Connection timed out"%(exec_cmd['ip'])) return False except paramiko.AuthenticationException: ReportLog.send_results(False,"[ERROR %s]: execute [%s] on %s"%(log_time,exec_cmd['cmd2exec'],exec_cmd['ip']),des_str="[IP=%s Password=%s] Authentication failured"%(exec_cmd['ip'],exec_cmd['passwd'])) return False return True
def file_exist(self, fileput): if not os.path.isfile(fileput['file2put']): ReportLog.send_results(False, "NO: locate [%s]" % (fileput['file2put']), des_str="%s doesn't exist." % (fileput['file2put'])) return False return True
def dir_exists(self, dirput): if not os.path.isdir(dirput['dir2put']): ReportLog.send_results(False, "NO: locate [%s]" % (dirput['dir2put']), des_str="%s doesn't exist." % (dirput['dir2put'])) return False return True
def get_dir2transfer(self): remote_dir_path='' local_dir_path='' local_dir_path = raw_input("Please input local path : ") if not os.path.isdir(local_dir_path): ReportLog.sys_info("%s does not exists !"%(local_dir_path)) sys.exit(1) remote_dir_path = raw_input("Please input remote path : ") return (local_dir_path,remote_dir_path)
def exec_cmd(self, exec_cmd): try: # print exec_cmd['ip'],exec_cmd['passwd'] # print "\n" print "\nConnecting %s..." % exec_cmd['ip'] log_time = time.strftime("%Y-%m-%d %H:%M:%S") socket.setdefaulttimeout(2) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(exec_cmd['ip'], exec_cmd['port'], exec_cmd['username'], exec_cmd['passwd']) print "Connected %s Successfully..." % exec_cmd['ip'] stdin, stdout, stderr = ssh.exec_command(exec_cmd['cmd2exec']) err_message = stderr.read() if err_message: print err_message ReportLog.send_results( True, "[INFO %s]: execute [%s] on %s" % (log_time, exec_cmd['cmd2exec'], exec_cmd['ip']), des_str=err_message) return True ok_message = stdout.read() ReportLog.send_results( True, "[INFO %s]: execute [%s] on %s" % (log_time, exec_cmd['cmd2exec'], exec_cmd['ip']), des_str=str(ok_message)) ssh.close() except socket.timeout: ReportLog.send_results( False, "[ERROR %s]: execute [%s] on %s" % (log_time, exec_cmd['cmd2exec'], exec_cmd['ip']), des_str="%s Connection timed out" % (exec_cmd['ip'])) return False except socket.error: ReportLog.send_results( False, "[ERROR %s]: execute [%s] on %s" % (log_time, exec_cmd['cmd2exec'], exec_cmd['ip']), des_str="%s Connection timed out" % (exec_cmd['ip'])) return False except paramiko.AuthenticationException: ReportLog.send_results( False, "[ERROR %s]: execute [%s] on %s" % (log_time, exec_cmd['cmd2exec'], exec_cmd['ip']), des_str="[IP=%s Password=%s] Authentication failured" % (exec_cmd['ip'], exec_cmd['passwd'])) return False return True
def put_file(self,fileput): if not self.file_exist(fileput): return False try: log_time = time.strftime("%Y-%m-%d %H:%M:%S") print "Connecting %s..."%fileput['ip'] socket.setdefaulttimeout(5) t = paramiko.Transport((fileput['ip'],fileput['port'])) t.connect(username = fileput['username'], password = fileput['passwd']) sftp = paramiko.SFTPClient.from_transport(t) sftp.put(fileput['file2put'],fileput['file2save']) t.close() except IOError: error_msg = fileput['file2save'] + " is wrong." ReportLog.send_results(False,"[ERROR %s]: upload %s to %s"%(log_time,fileput['file2put'],fileput['ip']),des_str=error_msg) return False except Exception,e: ReportLog.send_results(False,"[ERROR %s]: upload %s to %s"%(log_time,fileput['file2put'],fileput['ip']),des_str=str(e)) return False
def put_dir(self,dirput): if not self.dir_exists(dirput): return False socket.setdefaulttimeout(2) print "Connecting %s..."%dirput['ip'] log_name = "/tmp/" + dirput['ip'].split('/')[-1] + "_put_dir.log" put_dir_cmd = "./put_dir.sh %s %s %s %s > %s 2>&1"%(dirput['ip'],dirput['passwd'],dirput['dir2put'],dirput['dir2save'],log_name) # print put_dir_cmd log_time = time.strftime("%Y-%m-%d %H:%M:%S") os.popen(put_dir_cmd) fd = open(log_name,'r') log = fd.read(1024) if 'No such file or directory' in log: ReportLog.send_results(False,"[ERROR %s]: upload %s to %s"%(log_time,dirput['dir2put'],dirput['ip']),des_str="%s doesn't exist on %s ."%(dirput['dir2save'],dirput['ip'])) return False elif 'timed out' in log or 'Connection refused' in log: ReportLog.send_results(False,"[ERROR %s]: upload %s to %s"%(log_time,dirput['dir2put'],dirput['ip']),des_str="%s: Connection timed out."%(dirput['ip'])) return False # print log ReportLog.send_results(True,"[INFO %s]: upload %s to %s"%(log_time,dirput['dir2put'],dirput['ip'])) fd.close() return True
def put_dir(self, dirput): if not self.dir_exists(dirput): return False socket.setdefaulttimeout(2) print "Connecting %s..." % dirput['ip'] log_name = "/tmp/" + dirput['ip'].split('/')[-1] + "_put_dir.log" put_dir_cmd = "./put_dir.sh %s %s %s %s > %s 2>&1" % ( dirput['ip'], dirput['passwd'], dirput['dir2put'], dirput['dir2save'], log_name) # print put_dir_cmd log_time = time.strftime("%Y-%m-%d %H:%M:%S") os.popen(put_dir_cmd) fd = open(log_name, 'r') log = fd.read(1024) if 'No such file or directory' in log: ReportLog.send_results(False, "[ERROR %s]: upload %s to %s" % (log_time, dirput['dir2put'], dirput['ip']), des_str="%s doesn't exist on %s ." % (dirput['dir2save'], dirput['ip'])) return False elif 'timed out' in log or 'Connection refused' in log: ReportLog.send_results(False, "[ERROR %s]: upload %s to %s" % (log_time, dirput['dir2put'], dirput['ip']), des_str="%s: Connection timed out." % (dirput['ip'])) return False # print log ReportLog.send_results( True, "[INFO %s]: upload %s to %s" % (log_time, dirput['dir2put'], dirput['ip'])) fd.close() return True
def dir_exists(self,dirput): if not os.path.isdir(dirput['dir2put']): ReportLog.send_results(False,"NO: locate [%s]"%(dirput['dir2put']),des_str="%s doesn't exist."%(dirput['dir2put'])) return False return True
def file_exist(self,fileput): if not os.path.isfile(fileput['file2put']): ReportLog.send_results(False,"NO: locate [%s]"%(fileput['file2put']),des_str="%s doesn't exist."%(fileput['file2put'])) return False return True