在腾讯云函数中使用python打SFTP问题
首先,云函数是使用提centos7,很老的版本。本文底解决了腾讯云函数中所有关于 Python 依赖、GLIBC 版本和 C 扩展的兼容性深坑。现在 paramiko 已经可以正常加载运行了。
#注意确认Python3的正确路径 # 1. 强制安装 cffi /var/lang/python39/bin/python3 -m pip install --upgrade --no-cache-dir --target . cffi==1.15.1 # 2. 安装其余依赖(锁死版本) /var/lang/python39/bin/python3 -m pip install --upgrade --no-cache-dir --target . cryptography==3.3.2 bcrypt==3.1.7 PyNaCl==1.4.0 paramiko==2.11.0
# -*- coding: utf8 -*-
import platform
import os
import sys
import json
print(">insert sys path...")
# 必须把当前目录插到路径最前面
current_dir = os.path.dirname(os.path.abspath(__file__))
if current_dir not in sys.path:
sys.path.insert(0, current_dir)
import json
print(">import paramiko")
import paramiko
print(">start.....")
def main_handler(event, context):
print(">main_handler....")
host = "sftp.xxxx.com"
port = 22
username = "sftp-xxxxxx"
password = "xxxxxx" # 请确保密码正确
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sftp = None
try:
# 增加 banner_timeout 防止握手超时
ssh.connect(host, port, username, password, timeout=15, banner_timeout=20)
sftp = ssh.open_sftp()
file_list = sftp.listdir('.')
return {
"isBase64Encoded": False,
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps({"status": "success", "files": file_list})
}
except Exception as e:
return {
"isBase64Encoded": False,
"statusCode": 500,
"headers": {"Content-Type": "application/json"},
"body": json.dumps({"status": "error", "message": str(e)})
}
finally:
if sftp: sftp.close()
ssh.close()
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · python静态变量赋值
- · 可在阿里云dataworks直接使用的worldbank data api
- · python常用(1)
- · [转]用python爬取指定用户微博图片及内容,并进行微博分类及使用习惯分析
- · python批量修改文件名
- · python 怎么添加中文注释
- · python删除redis所有数据
- · python使用redis示例
- · vscode修改终端terminal为Cmder
- · 微信小程序开发中,通过API生成的体验版短链接,打开跳转到的是生产版
- · 解决confluence文件预览问题,中文乱码问题
- · authentic如何把roles返回给sso客户端
