'Python paramiko get the terminal prompt

Is it possible to get the terminal prompt of a remote host via paramiko? This is the only thing I've found that works but its crazy b/c I need to have a sleep b/c it might return before the host sends the prompt.

import time    
def get_prompt(host):    
    with paramiko.SSHClient() as ssh:
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(host, 22, 'random_user', 'random_password', timeout=1)
        channel = ssh.invoke_shell()
        time.sleep(5)
        prompt = channel.recv(1000).decode()
        return prompt


Solution 1:[1]

hope I am not too late on this, I had the same problem, my solution was flushing the paramiko buffer before getting the prompt, and sending \n

buffer_size = # buffer size number

def flush(connection):
    while connection.recv_ready():
        connection.recv(buffer_size)

def get_prompt(connection):
    flush(connection)  # flush everything from before
    connection.sendall('\n')

    time.sleep(.3)
    data = str(connection.recv(buffer_size), encoding='utf-8').strip()
    flush()  # flush everything after (just in case)

    return data

def create_client(host):    
    with paramiko.SSHClient() as ssh:
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(host, 22, 'random_user', 'random_password', timeout=20)
        connection = ssh.invoke_shell()
        
        time.sleep(2)  # wait for banners
        prompt = get_prompt(connection)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 dsal3389