Документация Python неофициальный перевод

telnetlib.md

163 строк · 12.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/telnetlib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 20.14. [`telnetlib`](https://python-all.ru/2.7/library/telnetlib.html#module-telnetlib) – Telnet-клиент89**Исходный код:** [Lib/telnetlib.py](https://python-all.ru/src/2.7/Lib/telnetlib.py)1011---1213Модуль [`telnetlib`](https://python-all.ru/2.7/library/telnetlib.html#module-telnetlib) предоставляет класс [`Telnet`](https://python-all.ru/2.7/library/telnetlib.html#telnetlib.Telnet), реализующий протокол Telnet. Подробности протокола см. в [**RFC 854**](https://python-all.ru/2.7/library/telnetlib.html). Кроме того, он предоставляет символьные константы для символов протокола (см. ниже) и для параметров telnet. Символьные имена параметров telnet следуют определениям из `arpa/telnet.h`, с удалённым префиксом `TELOPT_`. Для символьных имён параметров, которые традиционно не включены в `arpa/telnet.h`, см. исходный код самого модуля.1415Символьные константы для команд telnet: IAC, DONT, DO, WONT, WILL, SE (конец поднегосиации), NOP (нет операции), DM (метка данных), BRK (прерывание), IP (прерывание процесса), AO (отмена вывода), AYT (вы здесь?), EC (стирание символа), EL (стирание строки), GA (продолжайте), SB (начало поднегосиации).1617#### `class telnetlib.Telnet([host[, port[, timeout]]])`1819[`Telnet`](https://python-all.ru/2.7/library/telnetlib.html#telnetlib.Telnet) представляет подключение к Telnet-серверу. По умолчанию экземпляр изначально не подключён; для установки соединения необходимо использовать метод [`open()`](https://python-all.ru/2.7/library/telnetlib.html#telnetlib.Telnet.open). В качестве альтернативы имя хоста и необязательный номер порта можно передать конструктору, и в этом случае соединение с сервером будет установлено до возврата из конструктора. Необязательный параметр *timeout* задаёт тайм-аут в секундах для блокирующих операций, таких как попытка подключения (если не указан, используется глобальная настройка тайм-аута по умолчанию).2021Повторное открытие уже подключённого экземпляра не допускается.2223Этот класс имеет множество методов `read_*()`. Обратите внимание, что некоторые из них возбуждают [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError) при достижении конца соединения, поскольку по другим причинам они могут вернуть пустую строку. См. отдельные описания ниже.2425Изменено в версии 2.6: добавлен параметр *timeout*.2627> **См. также**28>29> **[**RFC 854**](https://python-all.ru/2.7/library/telnetlib.html) – Спецификация протокола Telnet**30>31> Определение протокола Telnet.3233## 20.14.1. Объекты Telnet3435Экземпляры [`Telnet`](https://python-all.ru/2.7/library/telnetlib.html#telnetlib.Telnet) имеют следующие методы:3637#### `Telnet.read_until(expected[, timeout])`3839Читает до тех пор, пока не встретится заданная строка *expected* или не пройдёт *timeout* секунд.4041Если совпадение не найдено, возвращает то, что доступно, возможно пустую строку. Возбуждает [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError), если соединение закрыто и нет обработанных данных.4243#### `Telnet.read_all()`4445Читает все данные до EOF; блокируется до закрытия соединения.4647#### `Telnet.read_some()`4849Читает как минимум один байт обработанных данных, если только не достигнут EOF. Возвращает `''`, если достигнут EOF. Блокируется, если данные недоступны немедленно.5051#### `Telnet.read_very_eager()`5253Прочитать всё, что возможно без блокировки ввода-вывода (нетерпеливо).5455Возбуждает [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError), если соединение закрыто и нет обработанных данных. В противном случае возвращает `''`, если нет обработанных данных. Не блокируется, если только не в середине последовательности IAC.5657#### `Telnet.read_eager()`5859Прочитать легко доступные данные.6061Возбуждает [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError), если соединение закрыто и нет обработанных данных. В противном случае возвращает `''`, если нет обработанных данных. Не блокируется, если только не в середине последовательности IAC.6263#### `Telnet.read_lazy()`6465Обработать и вернуть данные, уже находящиеся в очередях (лениво).6667Возбуждает [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError), если соединение закрыто и нет доступных данных. В противном случае возвращает `''`, если нет обработанных данных. Не блокируется, если только не в середине последовательности IAC.6869#### `Telnet.read_very_lazy()`7071Вернуть любые данные, доступные в очереди обработанных данных (очень лениво).7273Возбуждает [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError), если соединение закрыто и нет доступных данных. В противном случае возвращает `''`, если нет обработанных данных. Этот метод никогда не блокируется.7475#### `Telnet.read_sb_data()`7677Возвращает данные, собранные между парой SB/SE (начало/конец субопции). Колбэк должен обращаться к этим данным, когда вызывается с командой `SE`. Этот метод никогда не блокируется.7879Новое в версии 2.3.8081#### `Telnet.open(host[, port[, timeout]])`8283Подключается к хосту. Второй необязательный аргумент – номер порта, по умолчанию равный стандартному порту Telnet (23). Необязательный параметр *timeout* задает тайм-аут в секундах для блокирующих операций, например попытки подключения (если не указан, используется глобальная настройка тайм-аута по умолчанию).8485Не пытайтесь переоткрыть уже подключенный экземпляр.8687Изменено в версии 2.6: добавлен параметр *timeout*.8889#### `Telnet.msg(msg[, *args])`9091Выводит отладочное сообщение, когда уровень отладки равен `>` 0. Если присутствуют дополнительные аргументы, они подставляются в сообщение с помощью стандартного оператора форматирования строк.9293#### `Telnet.set_debuglevel(debuglevel)`9495Устанавливает уровень отладки. Чем выше значение *debuglevel*, тем больше отладочного вывода выводится (на `sys.stdout`).9697#### `Telnet.close()`9899Закрывает подключение.100101#### `Telnet.get_socket()`102103Возвращает объект сокета, используемый внутри.104105#### `Telnet.fileno()`106107Возвращает файловый дескриптор объекта сокета, используемого внутри.108109#### `Telnet.write(buffer)`110111Записывает строку в сокет, удваивая любые IAC-символы. Может блокироваться, если соединение заблокировано. Может возбуждать [`socket.error`](https://python-all.ru/2.7/library/socket.html#socket.error), если соединение закрыто.112113#### `Telnet.interact()`114115Функция взаимодействия, эмулирующая очень простой Telnet-клиент.116117#### `Telnet.mt_interact()`118119Многопоточная версия [`interact()`](https://python-all.ru/2.7/library/telnetlib.html#telnetlib.Telnet.interact).120121#### `Telnet.expect(list[, timeout])`122123Читает до совпадения с одним из списка регулярных выражений.124125Первый аргумент – список регулярных выражений, скомпилированных (`regex objects`) или нет (строки). Необязательный второй аргумент – тайм-аут в секундах; по умолчанию блокируется бесконечно.126127Возвращает кортеж из трёх элементов: индекс в списке первого совпавшего регулярного выражения; возвращённый объект совпадения; и текст, прочитанный до совпадения включительно.128129Если встречен конец файла и не прочитано ни одного текста, возбуждает [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError). В противном случае, если ничего не совпало, возвращает `(-1, None, text)`, где *text* – текст, полученный на данный момент (может быть пустой строкой, если произошёл тайм-аут).130131Если регулярное выражение заканчивается жадным совпадением (например, `.*`) или если более одного выражения могут совпадать с одними и теми же входными данными, результаты недетерминированы и могут зависеть от времени ввода-вывода.132133#### `Telnet.set_option_negotiation_callback(callback)`134135Каждый раз, когда во входном потоке читается опция telnet, этот *колбэк* (если установлен) вызывается со следующими параметрами: колбэк(telnet socket, command (DO/DONT/WILL/WONT), option). После этого telnetlib не выполняет никаких других действий.136137## 20.14.2. Пример Telnet138139Простой пример, иллюстрирующий типичное использование:140141```python142import getpass143import sys144import telnetlib145146HOST = "localhost"147user = raw_input("Enter your remote account: ")148password = getpass.getpass()149150tn = telnetlib.Telnet(HOST)151152tn.read_until("login: ")153tn.write(user + "\n")154if password:155    tn.read_until("Password: ")156    tn.write(password + "\n")157158tn.write("ls\n")159tn.write("exit\n")160161print tn.read_all()162```163