Этот вопрос, вероятно, прост, но до сих пор я не смог найти решение в любом месте. В принципе, следующий код должен подключаться к хосту, принимать команду и печатать все, что возвращается хостом.Telnet и кодирование в Python
import telnetlib
import time
HOST = input("IP Address: ")
tn = telnetlib.Telnet(HOST, port = 23, timeout = 20)
time.sleep(10)
command = input("Enter command: ")
command.encode('utf-8')
tn.write(b"\n".join(command))
ret1 = tn.read_eager()
print(ret1)
print("Success!")
tn.close()
Однако, независимо от того, что я стараюсь я продолжаю получать ту же ошибку:
C:\Python34>call python34 telnet_test.py
IP Address: 10.20.249.64
Enter command: 001 rq version
Traceback (most recent call last):
File "telnet_test.py", line 9, in <module>
tn.write(b"\n".join(command))
TypeError: sequence item 0: expected a bytes-like object, str found
Я пробовал другие решения, основанные на подобных вопросов, которые я посмотрел, но ни один из них, казалось, не работать специально здесь я всегда получаю ту же ошибку.
ОП использует Python 3. – fenceop
Я должен был указать, я использую Python 3. Ваш код дает мне ошибку «TypeError:» в «требует строки как левого операнда, а не байтов», вытекающей из строки "command = input (" Enter command: ")" –
Onamar
Похоже, сработало, спасибо. Теперь моя единственная проблема заключается в том, что он возвращает b '' вместо любого фактического текста, но я думаю, что могу понять, что это может быть что-то в конце сервера. – Onamar