我想从不同的服务器导入数据,我使用pysftp,但是仅当我对服务器执行ssh然后运行脚本时,它才起作用。
如果可能的话,我想使用Fabric或pysftp从同一服务器同时导入数据。我准备了面料的文档,但没有找到解决方法。等待您的建议或相同的示例。
示例 *
from fabric.api import*
filename = 'path/ip_address.txt'
while True:
with open(filename) as f:
data = f.readlines()
env.hosts= data
env.user= "usr"
env.password="pwd"
get("~/path/*.xml","localpath/pm_xml")
使用此脚本,我收到一条错误消息找不到主机。请为连接指定(单个)主机字符串!
当我使用paramiko这个脚本时:
import paramiko
import os
filename = "/home/test/Desktop/ip_address.txt"
with open(filename) as f:
data = f.readlines()
while True:
for ipAddr in data:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ipAddr,username="usr",password="pwd")
sftp = ssh.open_sftp()
for element in sftp.listdir("server_path"):
if element.endswith(".xml"):
try:
sftp.get("server_path"+element,"/home/test/Documents/pm_xml/"+element)
except:
print(Exception)
sftp.close()
ssh.close()
使用paramiko,我每秒只能获得一个文件,但是每个服务器每分钟生成100个文件。 我的 ip_address.txt 包含ip地址:
11.11.11.11
22.22.22.22
33.33.33.33
有关在同一时间访问其他服务器并快速导入数据的任何建议。