Как давать команды внутри сессии telnet, используя python - PullRequest
0 голосов
/ 25 июня 2019

Я пишу скрипт на Python для автоматизации какой-либо задачи в симуляторе ... для подключения к симулятору используется команда telnet localhost <port>.

Эту команду я даю через os.system(telnet localhost <port>).

Работает.

И симулятор работает:

Пытаясь :: 1 ...
Подключено к localhost.
Экранирующий символ '^]'.
>

Теперь я должен давать команды через Python внутри, но я не могу внутри этого (>) я должен дать .. Я использовал команды telnet, но это не сработало.

#!/usr/bin/env python
import os,re,telnetlib
host = "localhost"
port = "1111"

tn = telnetlib.Telnet(host, port)
tn.write("exit")

Это пример кода, но он не работает.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Возможно, вам придется сказать telnetlib - прочитать до подсказку, а затем написать команду, которую вы хотите выполнить.

import os,re,telnetlib
host = "localhost"
port = "1111"

tn = telnetlib.Telnet(host, port)
tn.read_until(b">", timeout=10) # <- add this line
# tn.read_until(b"> ", timeout=10) # if prompt has space behind
tn.write(b"exit\n")

Вам также может пригодиться этот вопрос: Python Telnetlib read_until '#' или '>', определение нескольких строк?

0 голосов
/ 25 июня 2019

Команде Write необходимо, чтобы содержимое предоставлялось в байтах.Попробуйте это:

import os,re,telnetlib

host = "google.com"
port = "80"

telnet_client = telnetlib.Telnet(host, port)
print('Connection established')

telnet_client.write(b'exit')
print('<END/>')
...