簡體   English   中英

Pexpect:無法設置 shell 提示

[英]Pexpect: Could not set shell prompt

我從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 

該錯誤是由於 login_timeout 造成的,默認情況下為 10 秒。 在 login() 中設置高 login_timeout 解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM