Я использую paramiko для ssh на удаленной машине, похоже, что пока все работает нормально
client.connect(hostname, port=ssh_port, username=username, key_filename=key_fname, password=password)
Теперь с удаленной машины мне нужно пойти глубже,и использование
stdin, stdout, stderr = client.exec_command('telnet localhost %d'%port)
, кажется, дает мне правильные ручки для начала разговора, используя stdin.write
Моя проблема в том, что когда я закончу, я нене знаю, как правильно выйти из telnet.Если я делаю это вручную, я могу зайти в телнет и увидеть: Escape character is '^]'.
Я могу использовать Ctrl+]
на клавиатуре, и появится небольшое меню с сообщением
Console escape. Commands are:
l go to line mode
c go to character mode
z suspend telnet
e exit telnet
, а затем яв состоянии выйти, нажав «e» (он завершает работу немедленно, без необходимости вводить клавишу «Enter»)
Но когда я пытаюсь сделать это в моем скрипте, с помощью stdin.write('^]e')
, stdin.write('\^]e')
, stdin.write('\c]e')
,stdin.write('\M-\C-]e')
и т. Д. Я все время вижу в stdout.read()
, что мой сценарий буквально вводит эти символы.Помещение небольшого числа time.sleep(0.1)
между ]
и e
, похоже, не помогает.
Как программно ввести эту escape-последовательность?