/ / Python - Pxssh - Obtention d'une erreur de mot de passe refusé lors de la tentative de connexion à un serveur distant - python, pexpect

Python - Pxssh - Obtention d'une erreur de mot de passe refusé lors de la tentative de connexion à un serveur distant - python, pexpect

J'essaie d'utiliser le module pexpect pxssh pour me connecterdans mon un de mon serveur. Je reçois un mot de passe refusé. Je pense connaître le problème, mais je ne peux pas comprendre comment le résoudre. Le problème est qu’il ya une bannière de bienvenue lorsque je me connecte au serveur (le changement de bannière n’est pas une option) et que pexpect se confondre. Voici mon code:

import pxssh

ssh = pxssh.pxssh()
ssh.login("192.168.1.10", "username", "password")

J'attends un "mot de passe:", mais pxssh attend un original_prompt = "[# $]" et ce sont des symboles et dans la bannière le couple de "."

Toute aide, je vais apprécier. Merci

Réponses:

2 pour la réponse № 1

Cette erreur est survenue car ssh est lock.so, ouvrez les terminaux et exécutez cette commande

xxxx@toad:~$ rm .ssh/known_hosts

supprimer les hôtes connus

une autre option est que vous vous connectez dans Windows signifie que vous devez vérifier l'invite de commande si vous essayez de vous connecter à Windows, utilisez pexpect

child = pexpect.spawn("ssh tiger@172.16.0.190 -p 8888")
child.logfile = open("/tmp/mylog", "w")
print child.before
child.expect(".*Are you sure you want to continue connecting (yes/no)?")
child.sendline("yes")

child.expect(".*assword:")
child.sendline("tigerr")
child.expect("Press any key to continue...")
child.send("r")
child.expect("C:Users.*>")
child.sendline("dir")
child.prompt("C:Users.*>")

pxssh utilise l'invite du shell pour synchroniser la sortie de l'hôte distant.

Afin de le rendre plus robuste, il configure l’invite du shell sur quelque chose de plus unique que juste $ ou #. Cela devrait fonctionner sur la plupart des styles Borne / Bash ou Csh coquilles. Référer http://www.pythonforbeginners.com/code-snippets-source-code/ssh-connection-with-python/


0 pour la réponse № 2

Je ne sais pas si vous avez raison sur votre diagnostic, je ne pense pas que la bannière puisse causer cela, mais une mauvaise invite peut le faire à coup sûr. Regardez le code pour être sûr. http://www.opensource.apple.com/source/lldb/lldb-69/test/pexpect-2.4/pxssh.py

Surtout cette partie:

 elif i==2: # password prompt again
# For incorrect passwords, some ssh servers will
# ask for the password again, others return "denied" right away.
# If we get the password prompt again then this means
# we didn"t get the password right the first time.
self.close()
raise ExceptionPxssh ("password refused")

Disclaimer: ce n'est pas mon code mais Pxssh code. Pourquoi ne pas utiliser paramiko (http://www.lag.net/paramiko/) ou attendre directement?