2016-10-28 71 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

相关问题