telnetlib — Клиент Telnet
Исходный код: Lib/telnetlib.py
Модуль telnetlib предоставляет класс Telnet, который реализует протокол Telnet. Подробности о протоколе см. в RFC 854. Кроме того, он предоставляет символические константы для символов протокола (см. ниже) и для опций telnet. Символические имена опций telnet следуют определениям в arpa/telnet.h, с удалённым префиксом TELOPT_. Символические имена опций, которые традиционно не включаются в arpa/telnet.h, см. в исходном коде модуля.
Символьные константы для команд telnet: IAC, DONT, DO, WONT, WILL, SE (Конец субпереговоров), NOP (Без операции), DM (Отметка данных), BRK (Прерывание), IP (Прервать процесс), AO (Прервать вывод), AYT (Вы здесь?), EC (Удалить символ), EL (Удалить строку), GA (Продолжать), SB (Начало субпереговоров).
-
class telnetlib.Telnet([host[, port[, timeout]]]) -
Telnetпредставляет подключение к серверу Telnet. По умолчанию экземпляр не подключён; для установления подключения необходимо использовать методopen(). В качестве альтернативы имя хоста и необязательный номер порта можно передать конструктору, в этом случае подключение к серверу будет установлено до возврата конструктора. Необязательный параметр timeout задаёт время ожидания в секундах для блокирующих операций, таких как попытка подключения (если не указано, будет использоваться глобальное значение по умолчанию).Не переоткрывайте уже подключённый экземпляр.
Этот класс имеет множество
read_*()методов. Обратите внимание, что некоторые из них могут генерировать исключениеEOFErrorпри чтении конца соединения, потому что они могут возвращать пустую строку по другим причинам. См. индивидуальные описания ниже.Изменено в версии 2.6: Добавлен параметр timeout.
См. также
- RFC 854 - Спецификация протокола Telnet
-
Определение протокола Telnet.
1. Объекты Telnet
Telnet экземпляры имеют следующие методы:
-
Telnet.read_until(expected[, timeout]) -
Читает до тех пор, пока не встретится заданная строка expected или пока не пройдёт timeout секунд.
Если совпадения нет, возвращается доступное значение, возможно, пустая строка. Вызовите исключение
EOFError, если подключение закрыто и нет готовых данных.
-
Telnet.read_all() -
Читает все данные до EOF; блокируется до закрытия соединения.
-
Telnet.read_some() -
Читает по меньшей мере один байт готовых данных, пока не встретится EOF. Возвращает
'', если EOF встретился. Блокируется, если данные не доступны немедленно.
-
Telnet.read_very_eager() -
Читает все доступные данные без блокировки (жадно).
Вызовите исключение
EOFError, если подключение закрыто и нет готовых данных. Возвращает'', если нет готовых данных, иначе. Не блокируется, если не находится внутри последовательности IAC.
-
Telnet.read_eager() -
Читает доступные данные.
Вызовите исключение
EOFError, если подключение закрыто и нет готовых данных. Возвращает'', если нет готовых данных, иначе. Не блокируется, если не находится внутри последовательности IAC.
-
Telnet.read_lazy() -
Обрабатывает и возвращает данные, уже находящиеся в очередях (лениво).
Вызовите исключение
EOFError, если подключение закрыто и нет данных. Возвращает'', если нет готовых данных, иначе. Не блокируется, если не находится внутри последовательности IAC.
-
Telnet.read_very_lazy() -
Возвращает любые доступные данные в очереди (очень лениво).
Вызовите исключение
EOFError, если подключение закрыто и нет данных. Возвращает'', если нет готовых данных, иначе. Этот метод никогда не блокируется.
-
Telnet.read_sb_data() -
Возвращает данные, собранные между парой SB/SE (начало/конец субопции). Обработчик должен получить доступ к этим данным, когда он был вызван с командой
SE. Этот метод никогда не блокируется.Добавлен в версии 2.3.
-
Telnet.open(host[, port[, timeout]]) -
Подключается к хосту. Необязательный второй аргумент — номер порта, по умолчанию стандартный порт Telnet (23). Необязательный параметр timeout задаёт время ожидания в секундах для блокирующих операций, таких как попытка подключения (если не указано, будет использоваться глобальное значение по умолчанию).
Не пытайтесь переоткрывать уже подключённый экземпляр.
Изменено в версии 2.6: Добавлен параметр timeout.
-
Telnet.msg(msg[, *args]) -
Выводит сообщение отладки, если уровень отладки равен
>0. Если присутствуют дополнительные аргументы, они подставляются в сообщение с помощью стандартного оператора форматирования строк.
-
Telnet.set_debuglevel(debuglevel) -
Устанавливает уровень отладки. Чем выше значение debuglevel, тем больше сообщений отладки вы получите (в
sys.stdout).
-
Telnet.close() -
Закрывает соединение.
-
Telnet.get_socket() -
Возвращает объект сокета, используемый внутри.
-
Telnet.fileno() -
Возвращает дескриптор файла объекта сокета, используемого внутри.
-
Telnet.write(buffer) -
Записывает строку в сокет, удваивая все символы IAC. Может заблокироваться, если подключение заблокировано. Может вызвать исключение
socket.error, если подключение закрыто.
-
Telnet.interact() -
Функция взаимодействия, эмулирует очень примитивного клиента Telnet.
-
Telnet.mt_interact() -
Многопоточная версия
interact().
-
Telnet.expect(list[, timeout]) -
Читает до тех пор, пока не будет найдено совпадение с одним из выражений регулярных выражений из списка.
Первый аргумент — список регулярных выражений, скомпилированных (
regex objects) или нескомпилированных (строки). Необязательный второй аргумент — время ожидания в секундах; по умолчанию блокируется неограниченно.Возвращает кортеж из трёх элементов: индекс в списке первого регулярного выражения, которое совпало; объект совпадения, возвращённый; и текст, прочитанный до и включая совпадение.
Если найден конец файла и текст не был прочитан, вызовите
EOFError. Иначе, если ничего не совпало, верните(-1, None, text), где text — полученный текст (может быть пустой строкой, если произошло превышение времени ожидания).Если регулярное выражение заканчивается жадным соответствием (например,
.*) или если несколько выражений могут соответствовать одному вводу, результаты не гарантированы и могут зависеть от времени ввода-вывода.
-
Telnet.set_option_negotiation_callback(callback) -
Каждый раз, когда опция telnet считывается в потоке ввода, этот callback (если задан) вызывается со следующими параметрами: callback(сокет telnet, команда (DO/DONT/WILL/WONT), опция). После этого telnetlib никаких других действий не выполняет.
2. Пример Telnet
Простой пример, иллюстрирующий типичное использование:
import getpass
import sys
import telnetlib
HOST = "localhost"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/telnetlib.html