Python Network Programming 简明教程
Python - Telnet
Telnet 是一种网络协议,它允许一台计算机中的用户登录到同一网络中的另一台计算机。Telnet 命令与主机名一起使用,然后输入用户凭据。成功登录后,远程用户可以访问应用程序和数据,方式类似于该系统的普通用户。当然,某些权限可以由系统管理员控制,该管理员设置和维护系统。
在 Python 中,Telnet 由 telnetlib 模块实现,该模块具有包含所需方法以建立连接的 Telnet 类。在下面的示例中,我们还使用 getpass 模块来处理作为登录过程一部分的密码提示。此外,我们假设连接是与 Unix 主机建立的。下面解释了程序中使用的 telnetlib.Telnet 类的各种方法。
-
Telnet.read_until - 读取直到遇到给定字符串 expected,或直到超时时间(以秒为单位)已过。
-
Telnet.write - 将字符串写入套接字,对所有 IAC 字符加倍。如果连接被阻塞,这可能会被阻塞。如果连接已关闭,可能会引发 socket.error。
-
Telnet.read_all() - 读取所有数据直到 EOF;阻塞直到连接关闭。
Example
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
请注意,此输出特定于在运行程序时提交其详细信息的远程计算机。