Skip to main content

OpenSSH 资源同步工具

一个用于从阿里云镜像同步 OpenSSH 资源的 Python 工具,支持定时检测和版本过滤。

功能特性

  • ✅ 从阿里云镜像同步 OpenSSH 资源
  • ✅ 支持设置检测间隔时间(最小12小时)
  • ✅ 版本过滤(只同步大于等于 openssh-10.2p1 的版本)
  • ✅ 只同步 tar.gz 文件
  • ✅ 无限循环后台守护进程
  • ✅ Docker 容器化支持
  • clang编译器优化构建
  • ✅ 命令行接口,易于使用
  • ✅ 基于 pyproject.toml 最新标准
  • ✅ systemd 服务管理(注册、状态查看、删除)
  • ✅ 自动服务注册功能
  • ✅ 服务健康状态监控

安装

从 PyPI 安装

pip install openssh-synchronization

使用清华大学 PyPI 镜像源加速安装

# 临时使用清华镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openssh-synchronization

# 或者设置清华镜像源为默认源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install openssh-synchronization

Docker 安装

从远程仓库拉取镜像

# 从腾讯云容器镜像服务拉取镜像
docker pull ccr.ccs.tencentyun.com/liumou/openssh-synchronization:latest

运行容器

# 直接运行(推荐使用环境变量配置)
docker run -d \
  --name openssh-sync \
  -v /path/to/downloads:/data/openssh \
  -e CHECK_INTERVAL=24 \
  -e DOWNLOAD_DIR=/data/openssh \
  -e MIN_VERSION=10.3.0 \
  -e DEBUG=false \
  ccr.ccs.tencentyun.com/liumou/openssh-synchronization:latest

查看日志

# 查看容器日志
docker logs openssh-sync

# 实时查看日志
docker logs -f openssh-sync

快速开始

查看帮助

openssh-sync --help

列出可用版本

openssh-sync list

输出示例:

🔍 正在获取OpenSSH版本列表...
📋 找到 3 个符合条件的版本:
------------------------------------------------------------
🔸 openssh-10.2p1
   文件: openssh-10.2p1.tar.gz
   大小: 1.9 MB

🔸 openssh-10.1p1
   文件: openssh-10.1p1.tar.gz
   大小: 1.9 MB

💡 提示: 使用 'openssh-sync sync' 命令下载这些版本

image-20251110-084439

执行一次性同步

# 使用默认配置
openssh-sync sync

# 自定义参数
openssh-sync sync --interval 48 --dir /opt/openssh --min-version 10.3.0

启动定时同步服务

# 启动守护进程
openssh-sync daemon --interval 24 --dir /tmp/openssh

# 使用配置文件
openssh-sync daemon --config-file config.json

# 启动守护进程并自动注册为systemd服务
openssh-sync daemon --auto-register

systemd 服务管理

# 注册为systemd服务
openssh-sync register

# 强制重新注册服务
openssh-sync register --force

# 查看服务状态
openssh-sync status

# 删除服务
openssh-sync unregister

生成配置文件

# 生成默认配置文件
openssh-sync config

# 生成自定义配置文件
openssh-sync config --interval 48 --dir /opt/openssh --extract --output my-config.json

配置说明

环境变量配置

OpenSSH同步工具支持通过环境变量配置参数,优先级:命令行参数 > 环境变量 > 默认值

环境变量 说明 示例值 默认值
CHECK_INTERVAL 检查间隔时间(小时) 24 24
DOWNLOAD_DIR 下载目录路径 /tmp/openssh ./downloads
MIN_VERSION 最小版本要求 10.2.1 10.2.1
DEBUG 启用调试模式 true false

使用示例:

# 通过环境变量配置
CHECK_INTERVAL=36 DOWNLOAD_DIR=/tmp/openssh MIN_VERSION=10.3.1 DEBUG=true openssh-sync sync

# 容器环境推荐用法
docker run -d \
  -e CHECK_INTERVAL=24 \
  -e DOWNLOAD_DIR=/data/openssh \
  -e MIN_VERSION=10.3.0 \
  -e DEBUG=false \
  openssh-sync

命令行参数

参数 说明 示例值 默认值
--interval, -i 检查间隔时间(小时) 24 24
--dir, -d 下载目录路径 /tmp/openssh ./downloads
--min-version 最小版本要求 10.2.1 10.2.1
--debug 启用调试模式 --debug False
--config-file 配置文件路径 /etc/openssh-sync.json None

配置文件格式

生成的 JSON 配置文件示例:

{
  "check_interval": 24,
  "download_dir": "./downloads",
  "min_version": [10, 2, 1],
  "mirror_url": "https://mirrors.aliyun.com/openssh/portable",
  "timeout": 30,
  "debug": false
}

systemd 服务配置

OpenSSH同步工具注册为systemd服务后,会创建以下配置:

服务文件位置: /etc/systemd/system/openssh-sync.service

服务配置内容:

[Unit]
Description=OpenSSH Synchronization Service

[Service]
ExecStart=/usr/local/bin/openssh-sync daemon
WorkingDirectory=/opt/openssh
User=root
Group=root
Restart=always

[Install]
WantedBy=multi-user.target

服务管理命令:

# 启动服务
sudo systemctl start openssh-sync

# 停止服务
sudo systemctl stop openssh-sync

# 重启服务
sudo systemctl restart openssh-sync

# 查看服务状态
sudo systemctl status openssh-sync

# 启用开机自启
sudo systemctl enable openssh-sync

# 禁用开机自启
sudo systemctl disable openssh-sync

# 查看服务日志
sudo journalctl -u openssh-sync -f

API 使用

基本用法

from openssh_sync import Config, OpenSSHSync

# 创建配置
config = Config(
    check_interval=24,           # 检查间隔:24小时
    download_dir="/tmp/openssh"  # 下载目录
)

# 创建同步实例
sync_tool = OpenSSHSync(config)

# 执行同步
success = sync_tool.sync_files()

if success:
    print("同步成功")
else:
    print("同步失败")

高级用法

from openssh_sync import create_sync, create_config_from_dict

# 从字典创建配置
config_dict = {
    'check_interval': 48,
    'download_dir': '/opt/openssh',
    'min_version': [10, 3, 0],
    'debug': True
}

config = create_config_from_dict(config_dict)
sync_tool = create_sync(config)

# 获取文件列表
files = sync_tool.get_file_list()
for file_info in files:
    print(f"版本: {file_info['version']}, 文件: {file_info['filename']}")

# 启动定时同步
sync_tool.start_scheduled_sync()

项目结构

openssh-synchronization/
├── pyproject.toml          # 项目配置
├── README.md               # 项目说明
├── LICENSE                 # 许可证
├── .gitignore             # Git忽略文件
└── openssh_sync/          # 主程序包
    ├── __init__.py        # 包初始化
    ├── main.py            # 主程序逻辑
    ├── config.py          # 配置管理
    ├── utils.py           # 工具函数
    └── cli.py             # 命令行接口

开发

安装开发依赖

pip install -e .[dev]

运行测试

pytest

代码格式化

black openssh_sync/
isort openssh_sync/

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。

贡献

欢迎提交 Issue 和 Pull Request!

技术支持

如有问题,请提交 Issue 或联系开发者。

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openssh_synchronization-1.1.8.tar.gz (86.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openssh_synchronization-1.1.8-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

Details for the file openssh_synchronization-1.1.8.tar.gz.

File metadata

  • Download URL: openssh_synchronization-1.1.8.tar.gz
  • Upload date:
  • Size: 86.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for openssh_synchronization-1.1.8.tar.gz
Algorithm Hash digest
SHA256 bc028941314e60d5f86dc4115ddf7cb2981f15e6f4507d9c5ee89b1789aa6823
MD5 8cbbe572daa55b31e8f36ef9d0902bd3
BLAKE2b-256 5712448eceed5decb5bf1cb28bfb56e39fdee4894179deeb8e38146c9fc90eed

See more details on using hashes here.

File details

Details for the file openssh_synchronization-1.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for openssh_synchronization-1.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 4a9e57e139c08db1ee9c0a41ae4710a9faaaca8b74460e6741b29e7e46e06b8a
MD5 14e2ccc54a99a4094955608202f6c906
BLAKE2b-256 d2e19a335f0f64c91923862f4ab5f0cae821e63edcffcb4e9c724fa72f50a538

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.8 This release

2 files

1.1.7

2 files

1.1.4

2 files

1.1.2

2 files

1.1.0

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page