Connection.get
không trả lại bất cứ điều gì. Nó tải xuống tệp từ xa vào một đường dẫn cục bộ được chỉ định bởi đối số localpath
. Nếu bạn không chỉ định đối số, nó sẽ tải tệp vào thư mục làm việc hiện tại.
Vì vậy, nếu bạn muốn tải xuống một thư mục địa phương cụ thể thay thế, bạn muốn điều này:
sftp.get['directory/file.csv', '/local/path/file.csv']
Nếu bạn thực sự muốn đọc tệp đến một biến [những gì tôi hiểu rằng bạn thực sự không muốn], bạn cần sử dụng Connection.getfo
, như:
flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
Ngoài ra, sử dụng thư viện Paramiko trực tiếp [không có trình bao bọc pysftp]. Xem Đọc một tệp từ máy chủ với SSH bằng Python.
See Read a file from server with SSH using Python.
Cảnh báo bắt buộc: Không đặt cnopts.hostkeys = None
, trừ khi bạn không quan tâm đến bảo mật. Đối với giải pháp chính xác, hãy xem Xác minh khóa máy chủ bằng pysftp.
SFTP là một giao thức truyền tệp an toàn được sử dụng để chuyển các tệp qua Internet. Nó giúp bạn truy cập tệp, chuyển và quản lý tệp trên bất kỳ luồng dữ liệu đáng tin cậy nào.. It helps you to file access, transfer and file management over any reliable data stream.
Python cung cấp một mô -đun có tên PYSFTP được sử dụng để kết nối với máy chủ SFTP. Đây là một giao diện đơn giản để SFTP và sử dụng các triển khai Phiên bản 2 Giao thức SSH.. It is a simple interface to SFTP and uses SSH protocol version 2 implementations.
Bài đăng này sẽ giải thích cách sử dụng PySFTP để kết nối máy chủ SFTP và quản lý nó bằng Python.
Cài đặt pysftp
Đầu tiên, bạn sẽ cần cài đặt Python và các gói khác vào hệ thống của bạn. Bạn có thể cài đặt chúng bằng lệnh sau:
apt-get install python3 python3-pip -y
Tiếp theo, cài đặt PYSFTP bằng lệnh sau:
pip install pysftp
Truy cập máy chủ SFTP bằng PysFTP
Trong phần này, chúng tôi sẽ tạo tập lệnh Python kết nối với máy chủ SFTP từ xa và liệt kê các tệp từ thư mục đã chỉ định:
Hãy tạo tập lệnh Python có tên SFTP.PY:
nano sftp.py
Thêm nội dung sau:
import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
0 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
2 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
3flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
2flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
3flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
4 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
6 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8Lưu và đóng tệp khi bạn hoàn thành.
Trong tập lệnh trên, chúng tôi đã nhập mô -đun PYSFTP sau đó lưu trữ tên người dùng, mật khẩu và địa chỉ IP từ xa trong biến. Sau đó, chúng tôi đã sử dụng các câu lệnh Python để thiết lập kết nối SFTP an toàn bằng IP, tên người dùng và mật khẩu được lưu trong biến. Sau khi kết nối thành công, chúng tôi sẽ chuyển thư mục từ xa sang /chọn và liệt kê tất cả các tệp từng cái một.
Bây giờ bạn có thể chạy tập lệnh sftp.py bằng lệnh sau:
flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
9Bạn sẽ thấy đầu ra sau:
apt-get install python3 python3-pip -y
0 apt-get install python3 python3-pip -y
1 apt-get install python3 python3-pip -y
2 apt-get install python3 python3-pip -y
3 apt-get install python3 python3-pip -y
4 apt-get install python3 python3-pip -y
5 apt-get install python3 python3-pip -y
6 apt-get install python3 python3-pip -y
7 apt-get install python3 python3-pip -y
8 apt-get install python3 python3-pip -y
9apt-get install python3 python3-pip -y
1apt-get install python3 python3-pip -y
2apt-get install python3 python3-pip -y
3apt-get install python3 python3-pip -y
4apt-get install python3 python3-pip -y
5apt-get install python3 python3-pip -y
6apt-get install python3 python3-pip -y
7apt-get install python3 python3-pip -y
8apt-get install python3 python3-pip -y
9Tải tệp lên SFTP bằng pysftp
Nếu bạn muốn tải một tệp từ hệ thống cục bộ của mình lên máy chủ SFTP bằng pysftp, bạn chỉ cần sử dụng phương thức sftp.put [] của máy khách SFTP.
Chúng ta hãy tạo tập lệnh sftp.py để tải lên một tệp có tên initrd.img được đặt tại /boot/initrd.img trên hệ thống cục bộ lên máy chủ SFTP từ xa trong thư mục /mnt.
nano sftp.py
Thêm nội dung sau:
pip install pysftp
1
import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
pip install pysftp
3pip install pysftp
4flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
0 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
2 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
3flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
4 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5pip install pysftp
8flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
6 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
0Lưu và đóng tệp khi bạn hoàn thành.
import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
2Trong tập lệnh trên, chúng tôi đã nhập mô -đun PYSFTP sau đó lưu trữ tên người dùng, mật khẩu và địa chỉ IP từ xa trong biến. Sau đó, chúng tôi đã sử dụng các câu lệnh Python để thiết lập kết nối SFTP an toàn bằng IP, tên người dùng và mật khẩu được lưu trong biến. Sau khi kết nối thành công, chúng tôi sẽ chuyển thư mục từ xa sang /chọn và liệt kê tất cả các tệp từng cái một.
import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
4flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
4 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
6 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8Lưu và đóng tệp khi bạn hoàn thành.
Where:
- Trong tập lệnh trên, chúng tôi đã nhập mô -đun PYSFTP sau đó lưu trữ tên người dùng, mật khẩu và địa chỉ IP từ xa trong biến. Sau đó, chúng tôi đã sử dụng các câu lệnh Python để thiết lập kết nối SFTP an toàn bằng IP, tên người dùng và mật khẩu được lưu trong biến. Sau khi kết nối thành công, chúng tôi sẽ chuyển thư mục từ xa sang /chọn và liệt kê tất cả các tệp từng cái một. is the path of the local file.
- Bây giờ bạn có thể chạy tập lệnh sftp.py bằng lệnh sau: is the path of the remote file.
- Bạn sẽ thấy đầu ra sau: is the method used to upload a file to the SFTP server.
apt-get install python3 python3-pip -y
0 apt-get install python3 python3-pip -y
1 apt-get install python3 python3-pip -y
2 apt-get install python3 python3-pip -y
3 apt-get install python3 python3-pip -y
4 apt-get install python3 python3-pip -y
5 apt-get install python3 python3-pip -y
6 apt-get install python3 python3-pip -y
7 apt-get install python3 python3-pip -y
8 apt-get install python3 python3-pip -y
9flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
9Tải tệp lên SFTP bằng pysftp
Nếu bạn muốn tải một tệp từ hệ thống cục bộ của mình lên máy chủ SFTP bằng pysftp, bạn chỉ cần sử dụng phương thức sftp.put [] của máy khách SFTP.
Connection.get
2
Chúng ta hãy tạo tập lệnh sftp.py để tải lên một tệp có tên initrd.img được đặt tại /boot/initrd.img trên hệ thống cục bộ lên máy chủ SFTP từ xa trong thư mục /mnt.
pip install pysftp
2 pip install pysftp
3 pip install pysftp
4flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
0 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1nano sftp.py
Thêm nội dung sau:
pip install pysftp
1
import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
pip install pysftp
3pip install pysftp
4flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
0 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
2 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
3flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
4 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5localpath
1flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
6 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8localpath
3Lưu và đóng tệp khi bạn hoàn thành.
localpath
5
Lưu và đóng tệp khi bạn hoàn thành.
Trong tập lệnh trên, chúng tôi đã nhập mô -đun PYSFTP sau đó lưu trữ tên người dùng, mật khẩu và địa chỉ IP từ xa trong biến. Sau đó, chúng tôi đã sử dụng các câu lệnh Python để thiết lập kết nối SFTP an toàn bằng IP, tên người dùng và mật khẩu được lưu trong biến. Sau khi kết nối thành công, chúng tôi sẽ chuyển thư mục từ xa sang /chọn và liệt kê tất cả các tệp từng cái một.
flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
9Tải tệp lên SFTP bằng pysftp
localpath
7
Nếu bạn muốn tải một tệp từ hệ thống cục bộ của mình lên máy chủ SFTP bằng pysftp, bạn chỉ cần sử dụng phương thức sftp.put [] của máy khách SFTP.
Chúng ta hãy tạo tập lệnh sftp.py để tải lên một tệp có tên initrd.img được đặt tại /boot/initrd.img trên hệ thống cục bộ lên máy chủ SFTP từ xa trong thư mục /mnt.
pip install pysftp
2 pip install pysftp
3 pip install pysftp
4flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
0 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1nano sftp.py
Thêm nội dung sau:
pip install pysftp
1
import pysftp
Hostname = "remote-ip-address"
Username = "root"
Password = "password"
pip install pysftp
3pip install pysftp
4flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
0 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
2 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
3flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
1flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
4 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
5Connection.getfo
6Connection.getfo
7
flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
6 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
7 flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
8flo = BytesIO[]
sftp.getfo[remotepath, flo]
flo.seek[0]
9Tải tệp lên SFTP bằng pysftp
localpath
7
Sự kết luận
Trong hướng dẫn trên, chúng tôi đã giải thích cách sử dụng mô -đun PySFTP Python để quản lý và làm việc với SFTP trong Python. Mô -đun PYSFTP có một loạt các phương thức mà bạn có thể sử dụng để thực hiện nhiều việc, như xử lý quyền, v.v.
Câu hỏi thường gặp về máy chủ SFTP
Làm cách nào để tải xuống từ SFTP Server bằng Python?
Python cung cấp một mô -đun có tên PYSFTP, cung cấp một loạt các lệnh để vận hành các hàm SFTP từ trong tập lệnh Python. Trước tiên, sử dụng phương thức kết nối trong mô -đun để tạo kết nối sau đó sử dụng phương thức GET để tải xuống tệp. Phương thức GET có hai tham số: đường dẫn từ xa với tên tệp ở cuối của nó và đường dẫn cục bộ, cũng có tên tệp ở cuối.
SFTP sử dụng cổng nào?
SFTP sử dụng một kết nối [FTP có hai]. Nó là cùng một cổng được sử dụng bởi SSH, đó là cổng TCP 22.
Nhận lệnh trong SFTP là gì?
Lệnh SFTP lấy một tệp từ một thiết bị từ xa lên thiết bị cục bộ - đây là chức năng sao chép chứ không phải là di chuyển tệp. Lệnh Get có một tham số bắt buộc, là đường dẫn từ xa với tên tệp ở cuối của nó. Bạn có thể thêm một đường dẫn cục bộ vào cuối lệnh. Nếu bạn không có tập tin đi vào thư mục hiện tại có cùng tên với tệp gốc. Bạn chỉ có thể đặt một tên tệp mới cho đường dẫn cục bộ nếu bạn muốn đổi tên nó.