代码之家  ›  专栏  ›  技术社区  ›  C.med

使用fabric或paramiko快速导入数据

  •  1
  • C.med  · 技术社区  · 6 年前

    我想从不同的服务器导入数据,我使用了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地址.txt 包含ip地址:

    11.11.11.11
    22.22.22.22
    33.33.33.33 
    

    建议同时访问不同的服务器并快速导入数据。

    0 回复  |  直到 6 年前