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;阻塞直到連線關閉。

示例

import getpass
import telnetlib

HOST = "https://: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

請注意,此輸出特定於在執行程式時提交的遠端計算機的詳細資訊。

廣告