Metadata-Version: 2.4
Name: sshctl
Version: 0.1.0
Summary: Manage SSH hosts in SQLite and connect via ssh
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: rich>=13.7.0

# sshctl

一个小而干净的 CLI 工具：用 SQLite 管理你的 SSH 服务器别名（name），并支持 `~/.ssh/config` 解析与合并。

## 安装

本地开发安装：

```bash
pip install -e .
```

## 使用

### 帮助/查询命令

- 总帮助：

```bash
sshctl -h
# 或
sshctl help
```

- 查询某个子命令怎么用：

```bash
sshctl help add
sshctl help ssh
sshctl help edit
```


### 1) 初始化数据库

默认数据库路径：`~/.local/share/sshctl/servers.db`

```bash
sshctl init
```

### 2) 添加服务器

普通方式（参数式）：

```bash
sshctl add --name hk1 --host 1.2.3.4 --user root --port 22 --identity-file ~/.ssh/id_rsa
```

交互式向导（按提示一步步输入，更省脑子）：

```bash
sshctl add --wizard
```

### 3) 列出服务器

```bash
sshctl list
```

### 4) 连接服务器（优先使用 ~/.ssh/config 的 Host 定义）

- 若 `name` 在 `~/.ssh/config` 中存在对应 `Host`，会直接执行：`ssh <name>`（最符合你的习惯，也自动继承 ProxyJump/IdentityFile 等配置）
- 否则回退到数据库中拼装命令：`ssh -p <port> -i <identity_file> user@host`

指定 name 连接：

```bash
sshctl ssh hk1
```

懒人模式（不传 name，会先列出数据库里的服务器，然后提示你输入要连接的 name；也可以输入 ~/.ssh/config 里的 Host）：

```bash
sshctl ssh
```

### 5) 编辑/删除

参数式：

```bash
sshctl edit hk1 --port 2222
sshctl del hk1
```

交互式向导：

```bash
sshctl edit hk1 --wizard
```

### 6) 搜索

```bash
sshctl search hk
```

## 设计说明

- 主键仍然是 id，但用户侧一律按 `name` 操作（并对 `name` 做 UNIQUE）。
- SSH 执行不使用 `shell=True`，避免注入风险。
- 数据库访问与 CLI 解耦，便于后续扩展（标签/环境/分组/跳板等）。
