Tôi chỉ trả lời một câu hỏi tương tự ở đây IMHO, nếu máy chủ FTP của bạn có thể giao tiếp với vải xin vui lòng cho chúng tôi vải. Nó tốt hơn nhiều so với làm RAW ftp
.
Tôi có một tài khoản FTP từ dotgeek.com
vì vậy tôi không chắc liệu điều này có hoạt động cho các tài khoản FTP khác không.
#!/usr/bin/python
from fabric.api import run, env, sudo, put
env.user = 'username'
env.hosts = ['ftp_host_name',] # such as ftp.google.com
def copy[]:
# assuming i have wong_8066.zip in the same directory as this script
put['wong_8066.zip', '/www/public/wong_8066.zip']
Lưu tệp dưới dạng fabfile.py
và chạy fab copy
cục bộ.
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
Một lần nữa, nếu bạn không muốn nhập mật khẩu mọi lúc, chỉ cần thêm
env.password = 'my_password'
Điều kiện tiên quyết: ftp, ftplib FTP, ftplib
Ở đây, chúng tôi sẽ tìm hiểu cách tải xuống và tải lên các tệp trong máy chủ FTP bằng Python. Trước khi chúng tôi bắt đầu, trước tiên chúng tôi sẽ hiểu FTP là gì.FTP.
FTP [Giao thức truyền tệp]
Giao thức truyền tệp [FTP] là giao thức lớp ứng dụng di chuyển các tệp giữa các hệ thống tệp cục bộ và từ xa. Nó chạy trên đỉnh của TCP, như HTTP. Để chuyển một tệp, 2 kết nối TCP được FTP sử dụng song song: Kết nối kiểm soát và kết nối dữ liệu.
Để tải lên và tải xuống tệp, chúng tôi sẽ sử dụng mô -đun ftplib trong Python. Nó là một mô-đun được xây dựng trong Python.
Mô -đun ftplib là gì? & Nbsp;
Mô -đun này xác định lớp FTP và một vài mục liên quan. Lớp FTP thực hiện phía máy khách của giao thức FTP. Bạn có thể sử dụng điều này để viết các chương trình Python thực hiện nhiều công việc FTP tự động, chẳng hạn như phản ánh các máy chủ FTP khác.
Chúng tôi sẽ sử dụng máy chủ FTP thử nghiệm, nó được gọi là dlptest & nbsp; Và chúng tôi sẽ sử dụng tệp văn bản dưới đây cho tất cả các hoạt động:FTP server, it is called DLPTEST and we are going to use the below text file for all operations:
Hãy để hiểu từng bước thực hiện:
- Nhập thông tin cần thiết, thông tin sẽ có sẵn bấm vào đây.click here.
Python3
import
ftplib
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
0____11 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
2yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
3yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
5yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
6yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
8Lưu ý: Mật khẩu sẽ thay đổi theo thời gian, hãy đảm bảo bạn truy cập trang web của họ để biết thông tin đăng nhập chính xác.Password will change time to time, make sure you visit their website for the correct credentials.
- Kết nối với máy chủ
Python3
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
9yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
1env.password = 'my_password'
2yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
4- Tải lên tệp [để tải lên một tệp, chúng tôi sẽ sử dụng phương thức storBinary []]the File [To upload a file, we will use storbinary[] method]
Syntax:
# Store a file in binary transfer mode storbinary[command, **]
Python3
env.password = 'my_password'
5yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
7env.password = 'my_password'
8env.password = 'my_password'
9# Store a file in binary transfer mode storbinary[command, **]0
# Store a file in binary transfer mode storbinary[command, **]1
# Store a file in binary transfer mode storbinary[command, **]2
# Store a file in binary transfer mode storbinary[command, **]3
# Store a file in binary transfer mode storbinary[command, **]4
# Store a file in binary transfer mode storbinary[command, **]5
# Store a file in binary transfer mode storbinary[command, **]6
# Store a file in binary transfer mode storbinary[command, **]7
# Store a file in binary transfer mode storbinary[command, **]8
# Store a file in binary transfer mode storbinary[command, **]3
ftp
0- Nhận danh sách các thư mục bằng phương thức Dir []. Máy chủ thử nghiệm sẽ xóa các tệp sau 30 phút.dir[] method. The test server will remove files after 30 minutes.
Python3
Output:
- Tải xuống tệp [để tải xuống một tệp, chúng tôi sẽ sử dụng phương thức retbinary [].the File [To download a file, we will use retrbinary[] method.
Python3
env.password = 'my_password'
5yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
7env.password = 'my_password'
8env.password = 'my_password'
9# Store a file in binary transfer mode storbinary[command, **]0
ftp
7# Store a file in binary transfer mode storbinary[command, **]2
# Store a file in binary transfer mode storbinary[command, **]3
# Store a file in binary transfer mode storbinary[command, **]4
# Store a file in binary transfer mode storbinary[command, **]5
dotgeek.com
2dotgeek.com
3# Store a file in binary transfer mode storbinary[command, **]8
# Store a file in binary transfer mode storbinary[command, **]3
dotgeek.com
6- Nhận danh sách các thư mục bằng phương thức Dir []. Máy chủ thử nghiệm sẽ xóa các tệp sau 30 phút.FTP Connection.
Python3
Tải xuống tệp [để tải xuống một tệp, chúng tôi sẽ sử dụng phương thức retbinary [].
fabfile.py
3fabfile.py
4fabfile.py
5
# Store a file in binary transfer mode storbinary[command, **]8
# Store a file in binary transfer mode storbinary[command, **]3
fabfile.py
8fabfile.py
9
Output:
Đóng kết nối FTP.
Python3
import
ftplib
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
0____11 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
2yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
3yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
5yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
6yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
8yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
9yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
1env.password = 'my_password'
2yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
4Tải lên tệp [để tải lên một tệp, chúng tôi sẽ sử dụng phương thức storBinary []]
env.password = 'my_password'
8env.password = 'my_password'
9# Store a file in binary transfer mode storbinary[command, **]0
# Store a file in binary transfer mode storbinary[command, **]1
# Store a file in binary transfer mode storbinary[command, **]2
# Store a file in binary transfer mode storbinary[command, **]3
# Store a file in binary transfer mode storbinary[command, **]4
# Store a file in binary transfer mode storbinary[command, **]5
# Store a file in binary transfer mode storbinary[command, **]6
# Store a file in binary transfer mode storbinary[command, **]7
# Store a file in binary transfer mode storbinary[command, **]8
# Store a file in binary transfer mode storbinary[command, **]3
ftp
0yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
03yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
04yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
05fabfile.py
9
Output:
5env.password = 'my_password'
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
7 env.password = 'my_password'
Python3
import
ftplib
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
0____11 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
2yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
3yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
5yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
6yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
8yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
9yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
1env.password = 'my_password'
2yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
4env.password = 'my_password'
5yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
1 env.password = 'my_password'
7Nhận danh sách các thư mục bằng phương thức Dir []. Máy chủ thử nghiệm sẽ xóa các tệp sau 30 phút.
# Store a file in binary transfer mode storbinary[command, **]5
dotgeek.com
2dotgeek.com
3# Store a file in binary transfer mode storbinary[command, **]8
# Store a file in binary transfer mode storbinary[command, **]3
dotgeek.com
6yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
03yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
04yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
05Tải xuống tệp [để tải xuống một tệp, chúng tôi sẽ sử dụng phương thức retbinary [].
fabfile.py
3fabfile.py
4fabfile.py
5
# Store a file in binary transfer mode storbinary[command, **]8
# Store a file in binary transfer mode storbinary[command, **]3
fabfile.py
8fabfile.py
9
Output: