import os
import time

import paramiko


# connect函数中,参数是一个主机的IP地址或者是主机名称,
# 在执行这个方法之后,如果成功的连接到服务器,那么就会返回一个sshclient对象
def connect(host):
    # 建立一个SSHClient的对象
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host, 22, username='root', password='123456')
    return ssh


# 上传文件
# 一个是连接对象conn,一个是上传的文件名称,一个上传之后的文件名称,在此必须写入完整的文件名称包括路径。
# 做法主要是打开一个sftp对象,然后使用put方法进行上传文件,最后关闭sftp连接,最后返回一个上传的文件名称的完整路径
def copy_module(conn, inpath, outpath):
    ftp = conn.open_sftp()
    ftp.put(inpath, outpath)
    # ftp.get(inpath, outpath)  # get 是下载
    print(inpath, outpath)
    ftp.close()
    return True


if __name__ == '__main__':
    remote_connect = connect('192.168.128.139')
    local_dir = r"D:\MyProject\Python\workspace\locrecord2"
    remote_dir = r"/root/locrecord2/"
    file_list = os.listdir(local_dir)
    start = time.time()
    for file in file_list:
        local_file_path = os.path.join(local_dir, file)
        remote_file_path = os.path.join(remote_dir, file)
        copy_module(remote_connect, local_file_path, remote_file_path)
        # 建议不要直接把connect('192.168.128.139')作为copy_module的参数,不然每次传输都重新连接会很慢
    end = time.time()
    print("time cost {:.2f} s".format(end - start))
"D:\Program Files\Python36\python3.exe" D:/MyProject/Python/workspace/scp_file.py
D:\MyProject\Python\workspace\locrecord2\o2020033114524219580127.wav /root/locrecord2/o2020033114524219580127.wav
............................................
D:\MyProject\Python\workspace\locrecord2\o2020041316223255340123.wav /root/locrecord2/o2020041316223255340123.wav
D:\MyProject\Python\workspace\locrecord2\o2020041316593417380127.wav /root/locrecord2/o2020041316593417380127.wav
time cost 19.19 s

Process finished with exit code 0
[root@master locrecord2]# pwd
/root/locrecord2
[root@master locrecord2]# ll
total 404264
-rw-r--r--. 1 root root  4975738 Apr 27 15:30 o2020033114524219580127.wav
-rw-r--r--. 1 root root  3140698 Apr 27 15:30 o2020033115092621050123.wav
-rw-r--r--. 1 root root  4717658 Apr 27 15:30 o2020033117024385870124.wav
............................................

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐