2017-04-27 21 views
0

我正在使用net.schmizz.sshj.xfer.scp.SCPFileTransfer類將文件從本地上傳到遠程服務器。它與以下錯誤失敗:在期待響應協議消息的同時獲取net.schmizz.sshj.xfer.scp.SCPException:EOF。同時將文件從linux上傳到windows

net.schmizz.sshj.xfer.scp.SCPException: EOF while expecting response to protocol message. Additional info: bash: -c: line 0: unexpected EOF while looking for matching bash: -c: line 1: syntax error: unexpected end of file

此問題我只在遠程計算機是Windows時面臨。對於Linux機器,它已成功上傳。 我已經在我的代碼中嘗試了以下步驟。 1.將文件從遠程機器下載到本地 2.再次將相同的文件上傳回遠程。

它未能在步驟2中

@Override 
public boolean upload(String localLocation, String remoteLocation) throws SSHClientException { 
    this.ensureConnected(); 
    SCPFileTransfer scp = this.sshj.newSCPFileTransfer(); 
    try { 
     scp.upload(localLocation, remoteLocation); 
    } catch (IOException e) { 
     log.error("Failed to copy file {} from local path at {} to remote location {} at {}" + remoteLocation, 
       hostname, localLocation, e); 
     return false; 
    } 
    return true; 
} 

任何線索將是很有益的。

謝謝。

+0

你知道,Windows和Linux處理的文件格式不同? 'CR LF'在Windows中使用,而Linux只使用'LF'。我會檢查這些文件是如何編碼的以及SCP如何處理文件格式。 您是否還檢查過遠程服務器是否接受該文件? – Nico

+0

我cygwin安裝在我的Windows機器,並按照每個cygdrive傳遞路徑。路徑看起來像「/ cygdrive/c/temp file /」 –

+0

錯誤消息表明傳遞給遠程系統(調用scp)的命令格式錯誤。它有不匹配的引用或類似。您的'remoteLocation'中是否有任何引號字符,或者遠程系統上的shell可能特殊的任何其他非字母數字字符? – Kenster

回答

0

我得到了解決方案。 我使用過的遠程文件路徑如下所示: '/ cygdrive/c/Program Files/XXX /' 問題是路徑中的「'」。從路徑中刪除「'」會導致文件成功上傳。

感謝所有誰給我帶領。

感謝, 思魯提

相關問題