2017-09-22 56 views
1

我想通過一個Python腳本中的http來模擬文件下載。該腳本用於測試本地LAN中的路由器/調制解調器設備。有沒有辦法使用另一個網關,而不是系統默認的python中的http請求?

目前,我有一個虛擬機的網絡配置爲使用設備作爲默認網關和DNS。我的測試機器上的python腳本使用Phython的paramiko庫sshs進入VM。在使用這個ssh連接的python腳本中,我運行了wget https://some.websi.te/some_file.zip。這似乎過度殺毒,但我不想在運行測試腳本的機器上重新配置網絡。

有沒有辦法消除額外的虛擬機(通過SSH運行wget)並仍然模擬下載?當然,這應該在我的本地機器上的python測試腳本中運行?

換句話說,我可以讓Python使用另一個網關,而不是腳本中的系統默認值?

+0

不,路由和HTTP發生在OSI堆棧的非常不同的層上, –

回答

2

我可以提供2種方法來做你想要的:一種不好的方式,一種乾淨的方式。 講起了不錯的方法:

如果你的腳本使用系統的「默認網關」,可能是由你的腳本中使用您的目的地專用路徑設置成你的系統,以避免你的腳本使用默認網關,可能足以解決您的問題。這是一種糟糕的方式,因爲不僅腳本將受到影響,從主機生成的所有流量都將受到影響。

讓我們來談談乾淨的方式。我想你正在運行Linux,但我認爲你可能能夠在支持多路由表功能的所有操作系統中執行相同的操作。

這裏的步驟,您需要做的總結:使用ip命令

  • 準備第二次(或第三...)路由表和「與表table_name」選項
  • 到使用uidrange選項使用ip規則創建規則流量選擇器。此選項允許您根據用戶的UID選擇流量。

當您完成這些步驟後,您可以通過在選定的UID範圍內創建一個用戶帳戶來測試您的設置,並將其設置爲ip-rule命令並測試您的路由設置。

最後一步是通過將您的uid切換到在ip-rule中選擇的uid來修改您的python腳本,並在您完成生成流量時從它存在。

總結乾淨的方式,它是做一樣的爛路,但只是通過使用多路由表內核特性數量有限,你的Linux系統用戶的UID,並切換到所選擇的用戶放入您的腳本以使用特殊路由設置。

內核的多路由表功能是我認爲能夠合併2個不同系統的唯一功能,就像您請求它,主機和虛擬機一樣,不需要虛擬機。而且您可以通過從一個用戶切換到另一個用戶到任何語言的腳本來激活該功能。

+0

好吧,稍後會試驗一下,如果我成功了,請發佈指南。謝謝。 – JCGB

相關問題