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=None, port=0[, timeout])¶ Telnet
представляє підключення до сервера Telnet. Примірник спочатку не підключений за замовчуванням; методopen()
необхідно використовувати для встановлення з’єднання. Крім того, ім’я хоста та необов’язковий номер порту також можна передати конструктору, і в цьому випадку з’єднання з сервером буде встановлено до повернення конструктора. Необов’язковий параметр timeout визначає час очікування в секундах для блокування таких операцій, як спроба підключення (якщо не вказано, буде використано глобальне налаштування часу очікування за умовчанням).Не відкривайте повторно вже підключений екземпляр.
Цей клас має багато методів
read_*()
. Зауважте, що деякі з них викликаютьEOFError
, коли читається кінець з’єднання, оскільки вони можуть повертати порожній рядок з інших причин. Перегляньте окремі описи нижче.Об’єкт
Telnet
є менеджером контексту і може використовуватися в операторіwith
. Коли блокwith
завершується, викликається методclose()
:>>> from telnetlib import Telnet >>> with Telnet('localhost', 23) as tn: ... tn.interact() ...
Змінено в версії 3.6: Додано підтримку менеджера контексту
Дивись також
- RFC 854 - Специфікація протоколу Telnet
Визначення протоколу Telnet.
Об’єкти Telnet¶
Екземпляри Telnet
мають такі методи:
-
Telnet.
read_until
(expected, timeout=None)¶ Читати, доки не буде знайдено заданий рядок байтів, очікуваний, або доки не мине тайм-аут секунд.
Якщо збігів не знайдено, поверніть усе, що є, натомість, можливо, порожні байти. Викликайте
EOFError
, якщо з’єднання закрито і немає готових даних.
-
Telnet.
read_all
()¶ Читати всі дані до EOF як байти; блокувати, доки з’єднання не буде закрито.
-
Telnet.
read_some
()¶ Зчитувати принаймні один байт готових даних, якщо EOF не влучено. Повертає
b''
, якщо EOF досягнуто. Блокувати, якщо дані не доступні відразу.
-
Telnet.
read_very_eager
()¶ Читати все, що можна без блокування в I/O (охоче).
Викликати
EOFError
, якщо з’єднання закрито і немає готових даних. Повертаєb''
, якщо в іншому випадку готові дані недоступні. Не блокуйте, якщо це не в середині послідовності IAC.
-
Telnet.
read_eager
()¶ Прочитайте доступні дані.
Викликати
EOFError
, якщо з’єднання закрито і немає готових даних. Повертаєb''
, якщо в іншому випадку готові дані недоступні. Не блокуйте, якщо це не в середині послідовності IAC.
-
Telnet.
read_lazy
()¶ Обробляти та повертати дані вже в чергах (лінь).
Викликати
EOFError
, якщо з’єднання закрито і дані відсутні. Повертаєb''
, якщо в іншому випадку готові дані недоступні. Не блокуйте, якщо це не в середині послідовності IAC.
-
Telnet.
read_very_lazy
()¶ Повернути будь-які дані, доступні в вареній черзі (дуже лінь).
Викликати
EOFError
, якщо з’єднання закрито і дані відсутні. Повертаєb''
, якщо в іншому випадку готові дані недоступні. Цей метод ніколи не блокується.
-
Telnet.
read_sb_data
()¶ Повертає дані, зібрані між парою SB/SE (підпараметр початок/кінець). Зворотний виклик має отримати доступ до цих даних, коли його було викликано командою
SE
. Цей метод ніколи не блокується.
-
Telnet.
open
(host, port=0[, timeout])¶ Підключіться до хосту. Необов’язковим другим аргументом є номер порту, який за замовчуванням є стандартним портом Telnet (23). Необов’язковий параметр timeout визначає час очікування в секундах для блокування таких операцій, як спроба підключення (якщо не вказано, буде використано глобальне налаштування часу очікування за умовчанням).
Не намагайтеся повторно відкрити вже підключений екземпляр.
Викликає подію аудиту
telnetlib.Telnet.open
з аргументамиself
,host
,port
.
-
Telnet.
msg
(msg, *args)¶ Друкувати повідомлення налагодження, коли рівень налагодження
>
0. Якщо присутні додаткові аргументи, вони замінюються в повідомленні за допомогою стандартного оператора форматування рядка.
-
Telnet.
set_debuglevel
(debuglevel)¶ Встановіть рівень налагодження. Чим вище значення debuglevel, тим більше результатів налагодження ви отримаєте (на
sys.stdout
).
-
Telnet.
close
()¶ Закрийте з’єднання.
-
Telnet.
get_socket
()¶ Повернути об’єкт сокета, який використовується внутрішньо.
-
Telnet.
fileno
()¶ Повертає дескриптор файлу об’єкта сокета, який використовується внутрішньо.
-
Telnet.
write
(buffer)¶ Запишіть рядок байтів у сокет, подвоюючи будь-які символи IAC. Це може заблокувати, якщо з’єднання заблоковано. Може викликати
OSError
, якщо з’єднання закрито.Викликає подію аудиту
telnetlib.Telnet.write
з аргументамиself
,buffer
.Змінено в версії 3.3: Цей метод використовувався для виклику
socket.error
, який тепер є псевдонімомOSError
.
-
Telnet.
interact
()¶ Функція взаємодії, емулює дуже дурний клієнт Telnet.
-
Telnet.
mt_interact
()¶ Багатопотокова версія
interact()
.
-
Telnet.
expect
(list, timeout=None)¶ Читайте, доки не знайдеться один зі списку регулярних виразів.
Перший аргумент — це список регулярних виразів, скомпільованих (regex-об’єкти) або нескомпільованих (байтові рядки). Необов’язковим другим аргументом є час очікування в секундах; за замовчуванням блокується на невизначений термін.
Повертає кортеж із трьох елементів: індекс у списку першого регулярного виразу, який відповідає; повернутий об’єкт відповідності; і байти читаються до збігу включно.
Якщо кінець файлу знайдено, а байти не було прочитано, підніміть
EOFError
. Інакше, якщо нічого не збігається, повертається(-1, None, data)
, де data — отримані на даний момент байти (можуть бути порожніми байтами, якщо стався тайм-аут).Якщо регулярний вираз закінчується жадібним збігом (наприклад,
.*
) або якщо кілька виразів можуть відповідати одному вводу, результати не є детермінованими та можуть залежати від часу введення-виведення.
-
Telnet.
set_option_negotiation_callback
(callback)¶ Щоразу, коли параметр telnet зчитується у вхідному потоці, цей callback (якщо встановлено) викликається з такими параметрами: callback(telnet socket, command (DO/DONT/WILL/WONT), option). Після цього telnetlib не виконує жодних інших дій.
Приклад Telnet¶
Простий приклад, що ілюструє типове використання:
import getpass
import telnetlib
HOST = "localhost"
user = input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until(b"login: ")
tn.write(user.encode('ascii') + b"\n")
if password:
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"ls\n")
tn.write(b"exit\n")
print(tn.read_all().decode('ascii'))