【问题标题】:Pexpect: Could not set shell promptPexpect:无法设置 shell 提示符
【发布时间】:2020-04-17 05:53:05
【问题描述】:

我从https://pexpect.readthedocs.io/en/stable/api/pxssh.html 引用了一个python 脚本,以便执行基于ssh 密码的登录。 代码如下:

from pexpect import pxssh
import getpass
try:
    s = pxssh.pxssh()
    hostname = input('hostname: ')
    username = input('username: ')
    password = getpass.getpass('password: ')
    s.login(hostname, username, password)
    s.sendline('uptime')   # run a command
    s.prompt()             # match the prompt
    print(s.before)        # print everything before the prompt.
    s.sendline('ls -l')
    s.prompt()
    print(s.before)
    s.sendline('df')
    s.prompt()
    print(s.before)
    s.logout()
except pxssh.ExceptionPxssh as e:
    print("pxssh failed on login.")
    print(e)

当我运行代码时,它会提示输入主机名、用户名和密码。通过 CLI 提供这些输入后,ssh 登录失败,异常如下:

could not set shell prompt (received: b"unset PROMPT_COMMAND\r\nPS1='[PEXPECT]\\$ '\r\nUser1@167.254.225.14's password: \r\nUser1@167.254.225.14's password: ", expected: '\\[PEXPECT\\][\\$\\#] ').

手动登录适用于相同的 ssh 凭据。

Note:
Python version: 3.6
Pexpect version: 4.7 

【问题讨论】:

    标签: python python-3.x ssh pexpect pxssh


    【解决方案1】:

    错误是由于默认为 10 秒的 login_timeout 造成的。 在 login() 中设置高 login_timeout 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多