SFTP Tool Skill
SFTP/SSH 远程文件管理工具,功能丰富易用。
功能特性
📁 文件管理
- 上传文件/目录: 支持单个文件或整个目录上传
- 下载文件/目录: 支持单个文件或整个目录下载
- 列出目录: 查看远程目录内容
- 创建/删除目录: 支持递归创建
- 重命名/移动: 文件和目录重命名
- 删除文件/目录: 支持递归删除
- 检查存在: 验证路径是否存在
📄 文件操作
- 读取文本: 直接读取远程文本文件
- 写入文本: 直接写入远程文本文件
- 获取文件信息: 文件大小、修改时间等
- 过滤函数: 自定义上传/下载过滤
🔧 SSH 功能
- 执行命令: 通过 SSH 执行远程命令
- 密码/密钥认证: 支持两种认证方式
- 超时设置: 防止连接挂起
- 上下文管理: 使用 with 语句自动管理连接
🛡️ 安全特性
- 主机密钥自动添加: 首次连接自动添加
- 私钥加密: 支持带密码的私钥
- 超时保护: 防止无响应连接
使用方法
Python API
from skills.sftp_tool import SFTPClient
# 密码认证
with SFTPClient('example.com', 22, 'user', password='pass') as sftp:
# 上传文件
sftp.upload_file('local.txt', 'remote.txt')
# 下载文件
sftp.download_file('remote.txt', 'local.txt')
# 列出目录
files = sftp.list_dir('/path')
# 创建目录
sftp.mkdir('/new/path')
# 删除文件
sftp.delete('/old/file.txt')
# 执行命令
code, stdout, stderr = sftp.execute_command('ls -la')
# 密钥认证
with SFTPClient('example.com', 22, 'user',
private_key_path='/path/key.pem',
private_key_passphrase='pass') as sftp:
# 上传目录
sftp.upload_dir('/local/dir', '/remote/dir')
# 下载目录
sftp.download_dir('/remote/dir', '/local/dir')
API 参考
SFTPClient 类
初始化
SFTPClient(host, port=22, username=None, password=None,
private_key_path=None, private_key_passphrase=None,
timeout=30)
连接管理
connect(auto_add_host_key=True) - 连接服务器
disconnect() - 断开连接
- 使用
with 语句自动管理连接
目录操作
list_dir(remote_path='.', detailed=True) - 列出目录
mkdir(remote_path, exist_ok=False) - 创建目录
mkdirs(remote_path, exist_ok=True) - 递归创建目录
rmdir(remote_path, recursive=False) - 删除目录
文件操作
exists(remote_path) - 检查是否存在
is_file(remote_path) - 是否是文件
is_dir(remote_path) - 是否是目录
stat(remote_path) - 获取文件信息
delete(remote_path) - 删除文件
rename(old_path, new_path) - 重命名/移动
read_text(remote_path, encoding='utf-8') - 读取文本
write_text(remote_path, content, encoding='utf-8') - 写入文本
上传/下载
upload_file(local_path, remote_path, make_dirs=True, callback=None) - 上传文件
download_file(remote_path, local_path, make_dirs=True, callback=None) - 下载文件
upload_dir(local_dir, remote_dir, recursive=True, filter_func=None) - 上传目录
download_dir(remote_dir, local_dir, recursive=True, filter_func=None) - 下载目录
SSH 命令
execute_command(command, timeout=60) - 执行远程命令
1---2name: sftp-tool3description: SFTP/SSH 远程文件管理工具 - 上传下载、列表、重命名、删除、执行命令等4---56# SFTP Tool Skill78SFTP/SSH 远程文件管理工具,功能丰富易用。910## 功能特性1112### 📁 文件管理13- **上传文件/目录**: 支持单个文件或整个目录上传14- **下载文件/目录**: 支持单个文件或整个目录下载15- **列出目录**: 查看远程目录内容16- **创建/删除目录**: 支持递归创建17- **重命名/移动**: 文件和目录重命名18- **删除文件/目录**: 支持递归删除19- **检查存在**: 验证路径是否存在2021### 📄 文件操作22- **读取文本**: 直接读取远程文本文件23- **写入文本**: 直接写入远程文本文件24- **获取文件信息**: 文件大小、修改时间等25- **过滤函数**: 自定义上传/下载过滤2627### 🔧 SSH 功能28- **执行命令**: 通过 SSH 执行远程命令29- **密码/密钥认证**: 支持两种认证方式30- **超时设置**: 防止连接挂起31- **上下文管理**: 使用 with 语句自动管理连接3233### 🛡️ 安全特性34- **主机密钥自动添加**: 首次连接自动添加35- **私钥加密**: 支持带密码的私钥36- **超时保护**: 防止无响应连接3738## 使用方法3940### Python API4142```python43from skills.sftp_tool import SFTPClient4445# 密码认证46with SFTPClient('example.com', 22, 'user', password='pass') as sftp:4748 # 上传文件49 sftp.upload_file('local.txt', 'remote.txt')5051 # 下载文件52 sftp.download_file('remote.txt', 'local.txt')5354 # 列出目录55 files = sftp.list_dir('/path')5657 # 创建目录58 sftp.mkdir('/new/path')5960 # 删除文件61 sftp.delete('/old/file.txt')6263 # 执行命令64 code, stdout, stderr = sftp.execute_command('ls -la')65```6667```python68# 密钥认证69with SFTPClient('example.com', 22, 'user',70 private_key_path='/path/key.pem',71 private_key_passphrase='pass') as sftp:7273 # 上传目录74 sftp.upload_dir('/local/dir', '/remote/dir')7576 # 下载目录77 sftp.download_dir('/remote/dir', '/local/dir')78```7980## API 参考8182### SFTPClient 类8384#### 初始化85```python86SFTPClient(host, port=22, username=None, password=None,87 private_key_path=None, private_key_passphrase=None,88 timeout=30)89```9091#### 连接管理92- `connect(auto_add_host_key=True)` - 连接服务器93- `disconnect()` - 断开连接94- 使用 `with` 语句自动管理连接9596#### 目录操作97- `list_dir(remote_path='.', detailed=True)` - 列出目录98- `mkdir(remote_path, exist_ok=False)` - 创建目录99- `mkdirs(remote_path, exist_ok=True)` - 递归创建目录100- `rmdir(remote_path, recursive=False)` - 删除目录101102#### 文件操作103- `exists(remote_path)` - 检查是否存在104- `is_file(remote_path)` - 是否是文件105- `is_dir(remote_path)` - 是否是目录106- `stat(remote_path)` - 获取文件信息107- `delete(remote_path)` - 删除文件108- `rename(old_path, new_path)` - 重命名/移动109- `read_text(remote_path, encoding='utf-8')` - 读取文本110- `write_text(remote_path, content, encoding='utf-8')` - 写入文本111112#### 上传/下载113- `upload_file(local_path, remote_path, make_dirs=True, callback=None)` - 上传文件114- `download_file(remote_path, local_path, make_dirs=True, callback=None)` - 下载文件115- `upload_dir(local_dir, remote_dir, recursive=True, filter_func=None)` - 上传目录116- `download_dir(remote_dir, local_dir, recursive=True, filter_func=None)` - 下载目录117118#### SSH 命令119- `execute_command(command, timeout=60)` - 执行远程命令