在计算机之间远程发送文件

Sending files between computers remotely

如何远程发送和接收文件,以及如何通过 python 推送更新?我们在市场上有很多设备,它们都是基于 Windows 10 的。我们如何才能将文件发送到那些机器并从这些机器接收文件?我们想使用 python 来完成这项任务。任何教程或文章都可能很棒。

我不久前写了这个脚本,用于将文件从我的本地笔记本电脑发送到我的远程 SFTP 服务器。这些机器有彼此的 public 键:

import pysftp
import paramiko


fpaths = ['list/of', 'file/paths']

with pysftp.Connection(server, username='loginID') as sftp:
    with sftp.cd('target/directory'):
        for fpath in fpaths:
            print("Sending:", fpath)

            if not os.path.isdir(fpath):
                sftp.put(fpath)
                print("Permissioning", fpath)
                sftp.chmod(os.path.basename(fpath), 755)

            else:
                dirname = os.path.basename(fpath)
                if not sftp.isdir(dirname):
                    sftp.mkdir(dirname)
                    print("Permissioning", dirname)
                    sftp.chmod(os.path.basename(dirname), 755)

                sftp.put_r(fpath, dirname)

                sftp.walktree(dirname,
                              dcallback=lambda dname:print("Permissioning", dname) or sftp.chmod(dname, 755),
                              fcallback=lambda fname:print("Permissioning", fname) or sftp.chmod(fname, 755),
                              ucallback=lambda x:x)

尝试使用 ftplib package for python ftp connection. Here 是一个小教程。

import ftplib

ftp = ftplib.FTP("www.python.org")
ftp.login("anonymous", "ftplib-example-1")

data = []

ftp.dir(data.append)

ftp.quit()

for line in data:
    print "-", line

执行上面的代码示例:

$ python ftplib-example-1.py
- total 34
- drwxrwxr-x  11 root     4127         512 Sep 14 14:18 .
- drwxrwxr-x  11 root     4127         512 Sep 14 14:18 ..
- drwxrwxr-x   2 root     4127         512 Sep 13 15:18 RCS
- lrwxrwxrwx   1 root     bin           11 Jun 29 14:34 README -> welcome.msg
- drwxr-xr-x   3 root     wheel        512 May 19  1998 bin
- drwxr-sr-x   3 root     1400         512 Jun  9  1997 dev
- drwxrwxr--   2 root     4127         512 Feb  8  1998 dup
- drwxr-xr-x   3 root     wheel        512 May 19  1998 etc
...

否则,您可以使用 Paramiko 使用 SSH。使用更适合你的。

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(
    paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1', username='none', 
    password='lol')

Ftplib 代码参考:The ftplib module

Paramiko代码参考:SSH PROGRAMMING WITH PARAMIKO | COMPLETELY DIFFERENT