发送文件到服务器中的特定路径

问题描述:

我想从我的PC发送文件到许多服务器到服务器目录中的特定文件夹使用一个脚本,为了保持简单,我想在开始时发送一个文件到一台服务器而不是很多。发送文件到服务器中的特定路径

我已经连接到使用密钥进行身份验证的服务器,所以我不需要在我的代码中使用任何登录信息。我已经使用了以下内容:

import pysftp as sftp 

def Filetransfer(): 
    try: 

     s = sftp.Connection(host='IP address')# this is where the server ip address is inserted 

     remotepath='/xx/yy/file.txt'# where my file will be transferred to 
     localpath='C:/Users/David/Desktop/file.txt'# this is the file location in my PC 
     s.put(localpath,remotepath) 
     s.close() 

    except Exception, e: 
     print str(e) 

Filetransfer() 

我得到以下异常:

AttributeError: "'Connection' object has no attribute '_transport_live'" in <bound method Connection.__del__ of <pysftp.Connection object at 0x0000000002E1F3C8>> 

我试图插入IP地址旁边的服务器端口,它并没有帮助,因为我得到同样的错误。

+0

你绝对确保你使用正确的问题变化密码并通过开放端口连接? – danidee

+0

hej danidee,我使用Pulse Secure SW连接到服务器。 Se这个https://www.pulsesecure.net和登录是通过输入我的用户名和密钥生成器完成的。我可以导航到服务器并使用SecureFX工具连接到每个服务器。因此,我需要的不是从我的PC中手动将文件拖动到服务器中的特定文件夹,而是自动执行。我不这应该是与上面的代码有问题,但我不明白为什么我会得到这个错误:(即使您从另一个程序登录到服务器,但仍然没有办法你的python( – ChakEL

+0

)脚本可以知道你已经登录。所以你需要在你的脚本中使用登录信息也 – danidee

使用此

sftp.Connection(host="your_host", port="your_port", username="user_name", private_key="private_key") 

如果你仍然有private_keypassword

退房文档

http://pysftp.readthedocs.org/en/release_0.2.8/pysftp.html

+0

Hi danidee,我设法解决了这个问题从我们公司的网站获取服务器登录信息。我没有使用端口。我现在遇到的问题是,其他服务器集群的登录资源不同。所以我需要写一个条件,如果登录失败,然后尝试另一个登录信息。我不知道该怎么做,如果你能给我一个提示,那就太好了非常感谢你的文档,我一定会在其他项目中使用它。 – ChakEL

+0

你好,我已经设法解决具有不同登录信息的服务器的问题。我已经使用了2个不同的列表,每个列表都有与之对应的登录信息(用户名/密码),以及2个循环。我希望做一个更聪明的代码,在那里我只需要制作一个包含具有2个不同登录信息的服务器的List,通过使用一个while循环。但不幸的是,我没有成功,但现在我对我目前的尴尬代码感到厌烦:)当我有时间奢侈时,我会尝试改进它。谢谢! – ChakEL

+0

您可以使用字典并让您的脚本询问用户想要连接的服务器,例如'servers = {'server1':['username1','password1'],'server2':['username2',' password2']}'那么你可以很容易地做'server.get('server1','对不起,服务器不存在')'。如果用户指定server1应该返回包含server1的连接详细信息的列表,或者如果找不到错误消息....并且由用户指我:) – danidee