pexpect - как передать пароль, используя события - PullRequest
0 голосов
/ 13 мая 2018

В этом snipper я пытаюсь передать пароль как событие, почему не работает следующее?

 password = input("INPUT PASSWORD: ")
 pexpect.run("ssh -lX user@gmail.com 'ls -l'",
 events={'(?i)password':' \n'}, password)

1 Ответ

0 голосов
/ 13 мая 2018

На основании примеров, предоставленных документацией для pexpect, похоже, что вы должны передавать пароль как часть значения '(?i)password'.

from pexpect import *
run('scp foo user@example.com:.', events={'(?i)password': mypassword})

Inв вашем случае это можно перевести на это.

pexpect.run(
    "ssh -lX eandersson@my-server.com 'ls -l'",
    events={'(?i)password': '%s\n' % password}
)

Более полный пример использования getpass для сокрытия пароля будет выглядеть следующим образом.

import pexpect
import getpass
password = getpass.getpass('Password: ')
print pexpect.run(
    "ssh -lX eandersson@10.0.1.1 'ls -l'",
    events={'(?i)password': '%s\n' % password}
)
...