Учебники

Python — Telnet

Telnet — это тип сетевого протокола, который позволяет пользователю на одном компьютере войти в систему на другом компьютере, который также принадлежит к той же сети. Команда telnet используется вместе с именем хоста, а затем вводятся учетные данные пользователя. После успешного входа в систему удаленный пользователь может получить доступ к приложениям и данным способом, аналогичным обычному пользователю системы. Конечно, некоторые привилегии могут контролироваться администратором системы, который настраивает и поддерживает систему.

В Python telnet реализуется модулем telnetlib, который имеет класс Telnet, который имеет необходимые методы для установления соединения. В приведенном ниже примере мы также используем модуль getpass для обработки запроса пароля как часть процесса входа в систему. Также мы предполагаем, что соединение установлено с хостом Unix. Различные методы из класса telnetlib.Telnet, используемые в программе, описаны ниже.

  • Telnet.read_until — чтение до тех пор, пока не будет найдена заданная строка, или пока не истечет время ожидания.

  • Telnet.write — записывает строку в сокет, удваивая любые символы IAC. Это может заблокировать, если соединение заблокировано. Может вызвать socket.error, если соединение закрыто.

  • Telnet.read_all () — читать все данные до EOF; заблокировать, пока соединение не будет закрыто

Telnet.read_until — чтение до тех пор, пока не будет найдена заданная строка, или пока не истечет время ожидания.

Telnet.write — записывает строку в сокет, удваивая любые символы IAC. Это может заблокировать, если соединение заблокировано. Может вызвать socket.error, если соединение закрыто.

Telnet.read_all () — читать все данные до EOF; заблокировать, пока соединение не будет закрыто

пример

import getpass
import telnetlib

HOST = "http://localhost:8000/"
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()

Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:

 - lrwxrwxrwx    1 0        0               1 Nov 13  2012 ftp -> .
- lrwxrwxrwx    1 0        0               3 Nov 13  2012 mirror -> pub
- drwxr-xr-x   23 0        0            4096 Nov 27  2017 pub
- drwxr-sr-x   88 0        450          4096 May 04 19:30 site
- drwxr-xr-x    9 0        0            4096 Jan 23  2014 vol

Обратите внимание, что этот вывод относится к удаленному компьютеру, данные которого передаются при запуске программы.