Python Telnet

Telnet是一種網路協議,它允許一臺電腦上的用戶登錄到另一臺也屬於同一網路的電腦。telnet命令與主機名一起使用,然後輸入用戶憑據。成功登錄後,遠程用戶可以以類似於系統普通用戶的方式訪問應用程式和數據。當然,某些許可權是由設置和維護系統的系統管理員控制。

在Python中,telnet由telnetlib模組實現,該模組具有Telnet類,該類具有建立連接所需的方法。在下面的示例中,使用getpass模組在登錄過程中處理密碼提示。另外,假設已建立到UNIX主機的連接。下麵說明程式中使用的telnetlib.Telnet類的各種方法。

  • 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

請注意,此輸出由運行程式時提交詳細資訊的遠程電腦決定。