2016-10-28 72 views
0

我是python的newb,所以請原諒我創建的黑客作業,以便將文件夾的內容傳輸到ssh服務器。paramiko sftp腳本在測試服務器上不在生產

問題是,它在我的測試服務器上效果很好,但是一旦運行它,我就需要上傳文件,因爲我收到下面的錯誤,我不確定它的含義。 我已經使用了它,但我無法弄清楚,請幫助。 謝謝。

import paramiko 
import glob 
import os 
from shutil import move 

host = "192.168.1.87"     #hard-coded 
port = 22 
password ="passwd"   #hard-coded 
username = "administator"  #hard-coded 

remotepath ='' #hard-coded 
localpath = 'D:\\PH/PH_PROD\\PowerConnectInterf1_WINS\\bin\\data\\Sheex\\bc\\945\\' 

#build filename array 
os.chdir("D:/PH/PH_PROD/PowerConnectInterf1_WINS/bin/data/Sheex/bc/945") 
filelist=[] 

for files in glob.glob("2016*"): 
    f = open(files, 'r') 
    filelist.append(f.name) 

f.close() 

if (len(filelist)>0): 
    transport = paramiko.Transport((host, port)) 
    transport.connect(username=username, password=password) 
    sftp = paramiko.SFTPClient.from_transport(transport) 

    for s in filelist: 
     #print remotepath+s 
     sftp.put(localpath+s,remotepath+s) 
     #os.rename(localpath+s,localpath+"945back/"+s) 
sftp.close() 
transport.close() 
#print 'Upload done.' 

錯誤:

D:\Scripts>python mysftp.py 
Traceback (most recent call last): 
    File "mysftp.py", line 37, in <module> 
    sftp.put(localpath+s,remotepath+s) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 676, in put 

    return self.putfo(fl, remotepath, file_size, callback, confirm) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 634, in put 
fo 
    with self.file(remotepath, 'wb') as fr: 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 327, in ope 
n 
    t, msg = self._request(CMD_OPEN, filename, imode, attrblock) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 730, in _re 
quest 
    return self._read_response(num) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 781, in _re 
ad_response 
    self._convert_status(msg) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 807, in _co 
nvert_status 
    raise IOError(errno.ENOENT, text) 
IOError: [Errno 2] Invalid file ID 

回答

-1

這聽起來像你的服務器不存在上寫的路徑。你應該檢查並創建如果不存在。

+0

嗨,我寫入根路徑,當我登錄,所以不知道這是否是問題。 – user2797021

+0

我試着調整目標拍到//,/ existingfolder等。但仍然得到相同的答案,我還設置sftp.put(本地路徑+ s,s)而不是sftp.put(本地路徑+ s,remotepath + S) – user2797021

相關問題