2017-04-11 106 views
-3

如何遠程發送和接收文件,並通過python推送更新?我們在市場上有大量設備,它們都是基於Windows 10的設備。我們怎麼能把文件發送到這些機器並從這些機器接收文件?我們想用python來完成這個任務。任何教程或文章都可能很棒。在遠程計算機之間發送文件

回答

1

我前一段時間編寫了這個腳本,從我的本地筆記本電腦發送文件到我的遠程SFTP服務器。這些機器有對方的公鑰:

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) 
1

嘗試使用ftplib軟件包進行python ftp連接。 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