首页 > 解决方案 > Pexpect 没有使用 python 将密码传递给命令行

问题描述

我有以下 python 脚本,其中 pexpect 将用户名和密码发送到命令行。

import pexpect
import sys
child = pexpect.spawn("sudo nordvpn login")
child.logfile_read = sys.stdout.buffer
child.expect("Email:")
child.sendline("my-email@my-email.com\r")
child.expect("Password:")
child.sendline("my-password")

输出看起来像这样

host@host-machine:~$ python3 script.py
Please enter your login details.
Email: my-email@my-email.com
Password: *
host@host-machine:~$

我不知道为什么显示星号,它不应该。它应该发送它并继续登录过程,但不这样做。child.interact()我在发送密码后尝试使用,

import pexpect
import sys
child = pexpect.spawn("sudo nordvpn login")
child.logfile_read = sys.stdout.buffer
child.expect("Email:")
child.sendline("my-email@my-email.com\r")
child.expect("Password:")
child.sendline("my-password")
child.interact()

现在输出是

host@host-machine:~$ python3 script.py
Please enter your login details.
Email: my-email@my-email.com
Password: * ***********************

我无法让它发送正确的密码、继续登录过程、发送新行或删除第一个星号。我做什么面包车?

标签: pythonpython-3.xlinuxubuntupexpect

解决方案


推荐阅读