Author: Eric S. Raymond <esr@thyrsus.com>"""
-# $Id: ssh-installkeys,v 1.14 2003/12/04 01:26:59 esr Exp esr $
+# $Id: ssh-installkeys,v 1.15 2003/12/30 17:15:58 esr Exp esr $
import os, sys, getopt, string, getpass, tempfile
Currently pexpect is intended for UNIX operating systems (including OS-X)."""
__version__ = '0.94'
-__revision__ = '$Revision: 1.14 $'
+__revision__ = '$Revision: 1.15 $'
__all__ = ['ExceptionPexpect', 'EOF', 'TIMEOUT', 'spawn',
'__version__', '__revision__']
child = spawn(command)
if self.verbose:
sys.stderr.write("-> " + command + "\n")
- seen = child.expect(['assword:', EOF])
- if seen == 0:
- if not self.password:
- self.password = getpass.getpass('Remote password: ')
- child.sendline(self.password)
- seen = child.expect(EOF)
- if self.verbose:
- sys.stderr.write("<- " + child.before + "\n")
+ while True:
+ seen=child.expect([EOF,'assword:','continue connecting (yes/no)?'])
+ if seen == 0:
+ break
+ elif seen == 1:
+ if not self.password:
+ self.password = getpass.getpass('Remote password: ')
+ child.sendline(self.password)
+ seen = child.expect(EOF)
+ elif seen == 2:
+ child.sendline("yes")
+ if self.verbose:
+ sys.stderr.write("<- " + child.before + "\n")
return child.before
def ssh(self, command):
return self.__exec("ssh -l %s %s \"%s\""%(self.user,self.host,command))