import os 
							
								import sys 
							
								import platform 
							
								
							
								import conf 
							
								import subprocess 
							
								
							
								
							
								
							
								class System: 
							
								    def GetBranch(self): 
							
								        Branch = platform.dist()[0] 
							
								        return Branch 
							
								    def GetRelease(self): 
							
								        Release = platform.dist()[1] 
							
								        return Release 
							
								    def GetInstaller(self): 
							
								        if self.GetBranch() in ['Ubuntu', 'debian']: 
							
								            installer = 'apt-get'
							
								        elif self.GetBranch() in ['redhat', 'fedora', 'centos']: 
							
								            installer = 'yum'
							
								        elif self.GetBranch() in ['SuSE']: 
							
								            installer = 'zypper'
							
								        else: 
							
								            installer = 'unknown'
							
								        return installer 
							
								
							
								
							
								
							
								try: 
							
								    import pexpect 
							
								except ImportError: 
							
								    installer = System() 
							
								    inst = install.GetInstaller() 
							
								    if (inst == 'apt-get') or (inst == 'zypper'): 
							
								        cmd = '%s install python-pexpect' % (inst) 
							
								    elif inst == 'yum': 
							
								        cmd = '$s install pexpect' % (inst) 
							
								    else: 
							
								        cmd = 'echo "Not support yet:)"'; 
							
								    try: 
							
								        fd = subprocess.Popen( cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) 
							
								        out = fd.stdout.readlines() 
							
								        err = fd.stderr.readlines() 
							
								        all = out+err 
							
								        all = "".join(all) 
							
								    except OSError,e: 
							
								        all = "Cannot run command, Exception:"+e+os.linesep 
							
								    import pexpect 
							
								
							
								
							
								
							
								
							
								class Expect: 
							
								    
							
								    def ssh(self, ip, port, user, passwd, cmd): 
							
								        
							
								        ssh = pexpect.spawn('ssh -p %s %s@%s "%s"' % (port, user, ip, cmd)) 
							
								        r = '' 
							
								        try: 
							
								            
							
								            i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5) 
							
								            if i == 0 : 
							
								                ssh.sendline(passwd) 
							
								            elif i == 1: 
							
								                ssh.sendline('yes') 
							
								                ssh.expect('password:') 
							
								                ssh.sendline(passwd) 
							
								        except pexpect.EOF: 
							
								            ssh.close() 
							
								        else: 
							
								            r = ssh.read() 
							
								            ssh.expect(pexpect.EOF) 
							
								            ssh.close() 
							
								        return r 
							
								    
							
								    def scp(self, ip, port, user, passwd, srcfile = "index.html", distpath): 
							
								        
							
								        ssh = pexpect.spawn('scp -P %s %s %s@%s:%s ' % (port, file, user, ip, distpath)) 
							
								        r= '' 
							
								        try: 
							
								            
							
								            i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5) 
							
								            if i == 0: 
							
								                ssh.sendline(passwd) 
							
								            elif i == 1: 
							
								                ssh.senline('yes') 
							
								                ssh.expect('password:') 
							
								                ssh.sendline(passwd) 
							
								        except pexpect.EOF: 
							
								            ssh.close() 
							
								        else: 
							
								            r = ssh.read() 
							
								            ssh.expect(pexpect.EOF) 
							
								            ssh.close() 
							
								        return r 
							
								
							
								packages = conf.package_dir 
							
								logs = conf.log_dir 
							
								c_tmp = conf.client_tmp_dir 
							
								port = conf.ssh_port 
							
								scripts = conf.script_dir 
							
								nodes = conf.node_list 
							
								expect = Expect() 
							
								
							
								os.system("sh " + scripts + "dpkg_server_ubuntu_x.x86_64.sh") 
							
								
							
								for i in range(len(nodes)): 
							
								    ip = nodes[i]['ip'] 
							
								    user = nodes[i]['user'] 
							
								    passwd = nodes[i]['passwd'] 
							
								    cmd = nodes[i]['cmd'] 
							
								    
							
								    r = expect.scp(ip, port, user, passwd, scripts+'dpkg_client_ubuntu_x.x86_64.sh', c_tmp) 
							
								    print r 
							
								    
							
								    r = expect.ssh(ip, port, user, passwd, cmd) 
							
								    print r