avez besoin d'aide avec le module pexpectbesoin peu d'aide avec module pexpect
J'ai écrit un code simple qui cloner un dépôt git à partir d'un serveur en utilisant ssh. Je suis confronté à quelques problèmes.
Le mot de passe est affiché en texte brut.
Je ne connais pas un moyen approprié de quitter le programme après le téléchargement. il jette l'erreur suivante ...
Traceback (most recent call last):
File "ToDelete3.py", line 65, in <module>
# # if i == 1:
File "ToDelete3.py", line 36, in getRepository
i = p.expect([ssh_key,'password:',pexpect.EOF])
File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1492, in interact
self.__interact_copy(escape_character, input_filter, output_filter)
File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1520, in __interact_copy
data = self.__interact_read(self.child_fd)
File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1510, in __interact_read
return os.read(fd, 1000)
OSError: [Errno 5] Input/output error
le code que je l'ai écrit jusqu'à présent est:
command = 'git clone ssh://[email protected]/something.git'
ssh_key = 'Are you sure you want to continue connecting'
def gracefulExit():
print 'Password Incorrect !!!'
os._exit(1)
def getRepository():
p = pexpect.spawn(command,maxread=10000,timeout = 100)
p.logfile = sys.stdout # logs out the command
i = p.expect([ssh_key,'password:',pexpect.EOF])
if i == 0:
print 'Inside sshkey'
p.sendline('yes')
i = p.expect([ssh_key,'password:',pexpect.EOF])
if i == 1:
try:
p.sendline('mypassword') # this mypassword is shown in clear text on the console
p.interact()
p.logfile = sys.stdout
p.expect(pexpect.EOF)
except Exception,e:
print str(e)
gracefulExit()
if i == 2:
print 'Inside EOF block'
if p.isalive():
print '******************************************************'
print ' Closing the process of Download !!! '
print '******************************************************\n\n'
p.close()
Toutes les entrées est très apprécié ..
Merci. -Vijay
Merci Pyfunc qui a fonctionné comme une gemme. Merci pour l'explication détaillée aussi. Aide à mieux le comprendre .. Désolé pour la réponse tardive .. Oui cela a effectivement fonctionné .. Mais un problème bien.Il ne montre pas le mot de passe quand j'entre, mais après cela ressemble à p.logfile = sys.stdout imprime le mot de passe en texte clair dans le terminal. des façons d'éviter cela .. – user596922
Cela aide. Merci !! – user596922