все Python 3до 3.13Удалено из стандартной библиотекипонятие
telnetlib
удалённые модули
Клиент протокола Telnet. Удалён в Python 3.13 — используйте потоки asyncio или пакеты telnetlib3 и Exscript; для удалённого входа — SSH.
Синтаксис
import telnetlib # до 3.13
telnetlib.Telnet(хост, порт) открывал соединение, write() отправлял байты, read_until(b'login: ') ждал приглашения — так автоматизировали сетевое оборудование и учебные серверы. Убран по PEP 594: Telnet передаёт пароли открытым текстом, а модуль почти не сопровождался. Как переписать: reader, writer = await asyncio.open_connection(хост, порт) даёт то же соединение, writer.write() и await writer.drain() — отправку, await reader.readuntil(b'login: ') — ожидание приглашения. Согласование опций Telnet (IAC) asyncio не делает — для него есть telnetlib3 и Exscript, а пакет standard-telnetlib возвращает старый модуль. Для удалённого входа на сервер используйте SSH, например paramiko или asyncssh.
Примеры
# Python 3.13+
try:
import telnetlib
except ModuleNotFoundError as e:
print(type(e).__name__) # → ModuleNotFoundError
# Python 3.13+
import asyncio
async def serve(reader, writer):
writer.write(b'login: ')
await writer.drain()
writer.close()
async def main():
server = await asyncio.start_server(serve, '127.0.0.1', 0)
port = server.sockets[0].getsockname()[1]
reader, writer = await asyncio.open_connection('127.0.0.1', port)
print(await reader.readuntil(b'login: ')) # → b'login: '
writer.close()
server.close()
asyncio.run(main())
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности