diff options
-rw-r--r-- | pexpect/examples/ssh_tunnel.py | 4 | ||||
-rwxr-xr-x | pexpect/examples/sshls.py | 33 |
2 files changed, 29 insertions, 8 deletions
diff --git a/pexpect/examples/ssh_tunnel.py b/pexpect/examples/ssh_tunnel.py index 4828a26..c9da889 100644 --- a/pexpect/examples/ssh_tunnel.py +++ b/pexpect/examples/ssh_tunnel.py @@ -44,11 +44,11 @@ def main (): print time.asctime(), print 'restarting tunnel' start_tunnel () - time.sleep (60) + time.sleep (11) print 'tunnel OK' else: # print 'tunnel OK' - time.sleep (60) + time.sleep (7) if __name__ == '__main__': main () diff --git a/pexpect/examples/sshls.py b/pexpect/examples/sshls.py index d51d499..6527a29 100755 --- a/pexpect/examples/sshls.py +++ b/pexpect/examples/sshls.py @@ -5,16 +5,37 @@ import pexpect import getpass +def ssh_command (user, host, password, command): + """This runs a command on the remote host. This returns a + pexpect.spawn object. This handles the case when you try + to connect to a new host and ssh asks you if you want to + accept the public key fingerprint and continue connecting. + """ + ssh_newkey = 'Are you sure you want to continue connecting' + child = pexpect.spawn('ssh -l %s %s %s'%(user, host, command)) + i = child.expect([pexpect.TIMEOUT, ssh_newkey, 'password: ']) + if i == 0: # Timeout + print 'ERROR!' + print 'SSH could not login. Here is what SSH said:' + print child.before, child.after + return None + if i == 1: # SSH does not have the public key. Just accept it. + child.sendline ('yes') + child.expect ('password: ') + i = child.expect([pexpect.TIMEOUT, 'password: ']) + if i == 0: # Timeout + print 'ERROR!' + print 'SSH could not login. Here is what SSH said:' + print child.before, child.after + return None + child.sendline(password) + return child + host = raw_input('Hostname: ') user = raw_input('User: ') password = getpass.getpass('Password: ') -child = pexpect.spawn("ssh -l %s %s /bin/ls -l"%(user, host)) - -child.expect('password:') -child.sendline(password) - +child = ssh_command (user, host, password, '/bin/ls -l') child.expect(pexpect.EOF) - print child.before |