def connect(user, host, keyfile, release): global Stop global Fails try: perm_denied = 'Permission denied' ssh_newkey = 'Are you sure you want to continue' conn_closed = 'Connection closed by remote host' opt = ' -o PasswordAuthentication=no' connStr = 'ssh ' + user + '@' + host + ' -i ' + keyfile + opt child = pexpect.spwan(connStr) ret = child.expect([ pexpect.TIMEOUT, perm_denied, ssh_newkey, conn_closed, '$', '#', ]) if ret == 2: print '[-] Adding Host to ~/.ssh/known_hosts' child.sendline('yes') connect(user, host, keyfile, False) elif ret == 3: print '[-] Connection Closed By Remote Host' Fails += 1 elif ret > 3: print '[+] Success. ' + str(keyfile) Stop = True finally: if release: connection_lock.release()
def ssh_cmd(ip, passwd, cmd): # ret = -1 ssh = pexpect.spwan('ssh root@%s' % (ip, cmd)) i = ssh.expect(['password:'******'continue connecting (yes/no)?'], timeout=5) if i == 0 : ssh.sendline(passwd) elif i == 1 : ssh.sendline('yes\n') ssh.expect('password:') ssh.sendline(passwd) ssh.sendline(cmd) r = ssh.read() print r # ret = 0 # expect pexpect.EOF: print "EOF" ssh.close() ret = -1 # expect pexpect.TIMEOUT: print "TIMEOUT" ssh.close()
def ssh_login(ip, user, passwd): child = pexpect.spwan('ssh -l %s %s'%(user,ip))