簡體   English   中英

使用Python連接到遠程服務器

[英]Connecting to a remote server using Python

我正在嘗試打印遠程服務器中文件夾的內容。 我使用的代碼是:

srcserver = 'abc.com'
dyndir = '\\\\%s\\E$\\Backup\\' %(srcserver)
ls = glob.glob('%s*' %dyndir)
print ls

當我嘗試這個時,它返回一個空數組。 您能幫我解決這個問題嗎?

訪問遠程服務器中的文件實際上確實很復雜! 在某些時候,軟件必須建立網絡連接,進行身份驗證,將文件系統命令轉換為網絡數據包等等。 如果您像在本地文件系統上那樣使用glob.glob來做到這一點,那么您實際上就是在依靠Windows虛擬文件系統為您完成所有這些工作。 我不奇怪它沒有工作,因為有很多地方可能出錯(例如,Windows vfs可能在比訪問文件系統這種相對低級的方式更高的級別上攔截文件系統命令)。

如果您確實想這樣做,則應在問題中添加以下信息:

  • 您的確切操作系統(此方法可能相當不可移植)
  • 用戶是否在運行腳本之前已經安裝了有問題的遠程系統,或者是否正在嘗試打開新的連接
  • 是否需要對遠程服務器進行身份驗證才能訪問它

可能還有其他我想不到的相關信息,因為當您研究它時,它開始更多是Windows問題而不是Python問題。 如果您想采用基於Windows vfs的Windows解決方案,則可能需要在問題標簽中添加“ Windows”和其他一些相關關鍵字,例如“ SMB”或“ CIFS”。

一種替代方法是使用SMB / CIFS客戶端,完全擺脫Windows文件系統的困擾。 您可以使用Python來操作命令行客戶端,例如smbclient。 或者,您可以使用Python庫來處理這些位,盡管使用Python處理這種事情並不是很常見,因此某些庫可能存在錯誤,支持不力或過時。 如果您想嘗試使用Google“ Python SMB”; 前幾個命中都與此問題有關。

您應該嘗試使用面料

它提供了到服務器的簡單ssh連接,並允許您在遠程服務器上運行命令,使用sftp進行文件傳輸,基本上是您可以使用ssh

安裝好結構后:

from fabric.api import run, settings

with settings(host_string="mybox-name"):
    run("ls /path/to/my/folder")

如果您使用Windows作為先前的海報暗示的話,那么我建議您檢查一下這張stackoverflow標簽

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM