我需要做一個遠程登錄會話,這使我使用官方telnetlib庫,在這裏廣泛解釋:telnetlib。 實際使用此軟件的機器有幾個IP,但似乎telnetlib不提供一種簡單或明顯的方式來更改我在遠程登錄對話握手階段使用的IP。在telnetlib.Telnet上使用不同的IP,而不是默認選擇一個?
任何人都有一些有用的信息呢?
我需要做一個遠程登錄會話,這使我使用官方telnetlib庫,在這裏廣泛解釋:telnetlib。 實際使用此軟件的機器有幾個IP,但似乎telnetlib不提供一種簡單或明顯的方式來更改我在遠程登錄對話握手階段使用的IP。在telnetlib.Telnet上使用不同的IP,而不是默認選擇一個?
任何人都有一些有用的信息呢?
telnetlib的源代碼在這裏,它似乎沒有提供任何方式來指定套接字的IP地址,並將其留給操作系統選擇,這將導致「默認」網絡接口。
self.sock = socket.create_connection((host, port), timeout)
https://hg.python.org/cpython/file/2.7/Lib/telnetlib.py#l227
的create_connection()
簽名是:
socket.create_connection(address[, timeout[, source_address]])
如果提供,source_address必須爲插座結合作爲它的源的2元組(主機,端口)連接前的地址。如果主機或端口分別爲「0」或0,則將使用操作系統默認行爲。 https://docs.python.org/2/library/socket.html
你可以複製telnetlib.py和修改create_connection()
我沒有測試過這個!但它可能是這樣的l227
self.sock = socket.create_connection((host, port), timeout, (src_host, src_port))
甚至添加關鍵字參數到open()調用傳遞所需的接口信息。
謝謝。正是我需要的。 –
你的意思是服務器有很多IP?但服務器在所有這些IP上使用FTP? – furas
是的,服務器擁有5個IP,加上回環之一。 我只想決定用來創建_telnet_對話的那個。 –