python - 如何使用 SSH 密钥编写 Python Paramiko SFTP
问题描述
我已经写了一个在 python 中有一个 main 方法的方法,它有很多创建文件的操作。现在我想 SFTP 该文件并将其从本地服务器发送到远程服务器。我可以请任何人帮助我如何在 python 中添加一个方法,该方法将首先执行 main 方法,然后执行用于 SFTP 目的的 paramiko 方法。请教我一个简单的代码。我很困惑!
解决方案
import paramiko
def upload_file(remote_server, ssh_user, ssh_password, local_filepath, remote_path, port_number=22):
sftp = None
transport = None
try:
# Create transport instance and setup SFTP connection
transport = paramiko.Transport((remote_server, port_number))
transport.connect(None, ssh_user, ssh_password)
sftp = paramiko.SFTPClient.from_transport(transport)
# Upload file to remote destination
sftp.put(local_filepath, remote_path)
except Exception as e:
print(f'Failed to transfer files: {e}')
if sftp:
sftp.close()
if transport:
transport.close()
示例调用
upload_file("10.197.15.1", "ssh_user", "ssh_password", "/tmp/myfile.txt", "/home/user/sftp/myfile.txt")
推荐阅读
- c# - 为什么用一个类分配一个变量,它构造一个线程比中止线程工作得更快?
- javascript - 如何跨多个页面从firebase获取uniqueID
- mysql - 在没有存储记录的 LEFT JOIN 表上使用 GROUP BY 和 HAVING
- python - 不能在另一个文件中使用返回的变量 - Python
- r - 为什么 R 函数 as.character 应用于列表时会自动生成换行符(\n)?
- python - 熊猫:比较组内的所有行并检查条件是否满足
- node.js - AssertionError:预期存根已使用参数 201 调用
- c# - 使用 c# 在每个印地语单词之前和之后设置括号
- python - 使用 Python 操作 MySQL 数据库时出现 1064 错误
- php - 卷曲在系统上工作但不在 laravel 项目中