Exemplo n.º 1
0
Arquivo: ssh.py Projeto: huhe56/verbs
 def login(self, hostname, username, password):        
     cmd = 'ssh ' + username + '@' + hostname
     self._logger.debug(cmd)
     _session = pexpect.spawn(cmd, timeout=Define.TIMEOUT_SSH)
     if define.PEXPECT_OUTPUT_STDOUT:
         _session.logfile_read = sys.stdout
     else:
         #Utils.append_file(Define.PATH_USNIC_LOG_FILE_ALL, Define.PATH_USNIC_LOG_FILE)
         self._log_file = Define.PATH_USNIC_LOG + hostname + "_" + Utils.get_current_time_string()
         self._logger.info(self._log_file)
         _session.logfile_read = file(self._log_file, "w")
     ret = _session.expect([pexpect.TIMEOUT, pexpect.EOF, Define.PATTERN_SSH_NEW_KEY, Define.PATTERN_PROMPT, Define.PATTERN_PASSWORD])
     if ret == 0:
         self._logger.warn('timeout when ssh to ' + hostname)
         os.remove(self._log_file)
         return None
     elif ret == 1:
         self._logger.warn('end of file when ssh to ' + hostname)
         os.remove(self._log_file)
         return None
     elif ret == 2:
         _session.sendline('yes')
         _session.expect(Define.PATTERN_PASSWORD)
         _session.sendline(password)
         ret = _session.expect([pexpect.TIMEOUT, Define.PATTERN_PROMPT])
         if ret == 0:
             self._logger.warn("timeout after sending password")
             os.remove(self._log_file)
             return None
     elif ret == 3:
         pass
     elif ret == 4:
         _session.sendline(password)
         ret = _session.expect([pexpect.TIMEOUT, Define.PATTERN_PROMPT])
         if ret == 0:
             self._logger.warn("timeout after sending password")
             os.remove(self._log_file)
             return None
     return _session