ClawSkills logoClawSkills

NordVPN

通过 Linux 上的 `nordvpn` CLI 控制 NordVPN(连接/断开、选择国家/城市/组、读取状态、调整设置、管理允许列表)。用于自动化,

介绍

# NordVPN CLI Skill (Linux)

这是一个用于控制 **NordVPN Linux CLI** (`nordvpn`) 的 ClawBot 技能,可以通过自动化和工作流进行连接/断开、选择位置、验证状态以及调整设置。

## 假设 / 兼容性

* 适用于官方 `nordvpn` CLI(示例显示:**4.3.1 [snap]**)。 * 要求 NordVPN 守护进程正在运行(通常是 `nordvpnd`)并具有足够的权限。 * 某些命令可能需要提升权限,具体取决于发行版 + 安装方式(snap 与 deb)。

## 安装

### 选项 A:Snap (Ubuntu 上常见)

```bash sudo snap install nordvpn nordvpn --version ```

### 选项 B:发行版软件包 / 仓库 (各不相同)

如果您通过 Nord 的仓库或包管理器安装,只需验证:

```bash which nordvpn nordvpn --version ```

### 验证守护进程正在运行

```bash # systemd installs usually systemctl status nordvpnd --no-pager || true # snap installs may not expose systemd unit the same way nordvpn status || true # or may require the full patch to be specified like so /snap/bin/nordvpn status || true ```

## 认证 / 登录

NordVPN CLI 通常每台机器/用户会话只需登录一次。

```bash nordvpn login ```

如果是无头环境,CLI 会引导您完成登录流程(通常通过浏览器链接/代码)。登录后,请确认:

```bash nordvpn account nordvpn status ```

**ClawBot 指引:** 除非您明确自动执行基于浏览器的登录流程,否则请将登录视为手动前提条件。

## 快速参考

### 状态

```bash nordvpn status ```

### 连接(最佳可用)

```bash nordvpn connect # alias: nordvpn c ```

### 连接到国家 / 城市 / 分组

```bash # country nordvpn connect Sweden # city (must exist in `nordvpn cities <country>`) nordvpn connect "Stockholm" # group (must exist in `nordvpn groups`) nordvpn connect P2P ```

### 断开连接

```bash nordvpn disconnect # alias: nordvpn d ```

### 列出位置

```bash nordvpn countries nordvpn cities Sweden nordvpn groups ```

### 设置(读取 + 更改)

```bash nordvpn settings # examples (options differ by version) nordvpn set autoconnect on nordvpn set killswitch on nordvpn set threatprotectionlite on # if supported nordvpn set protocol nordlynx # if supported ```

### 许可名单(绕过 VPN 以处理特定流量)

```bash # view help nordvpn allowlist --help # examples (subcommands differ by version) nordvpn allowlist add port 22 nordvpn allowlist add subnet 192.168.0.0/16 nordvpn allowlist remove port 22 ```

## 技能设计

### 本技能应做好的方面

1. **幂等连接操作**

* 如果已连接到请求的目标,则不执行任何操作(或返回“已连接”)。 * 如果连接到其他地方,则选择性地断开连接然后连接到目标。 2. **可靠验证**

* 在连接/断开连接后,始终运行 `nordvpn status` 并解析结果。 3. **安全回退**

* 如果请求的城市/国家/分组无效,请通过列出以下内容提供最接近的替代方案:

* `nordvpn countries` * `nordvpn cities <country>` * `nordvpn groups` 4. **人在回路中登录**

* 如果 `nordvpn` 报告未登录,则返回结构化响应,指示运行 `nordvpn login`。

### 推荐的“操作”(API 表面)

将这些实现为技能的可调用意图/工具:

* `status()` → 返回解析后的连接状态 * `connect_best()` → 连接到最佳可用服务器 * `connect_country(country)` * `connect_city(city)` (可选附带 `country` 用于消除歧义) * `connect_group(group)` * `disconnect()` * `list_countries()` * `list_cities(country)` * `list_groups()` * `get_settings()` * `set_setting(key, value)` * `allowlist_add(type, value)` * `allowlist_remove(type, value)`

## 建议的实现模式(CLI 编排)

### 1) 始终从状态开始

```bash nordvpn status ```

解析 CLI 通常返回的字段,例如:

* 连接状态 (Connected/Disconnected) * 当前服务器 / 国家 / 城市 * IP、协议、技术

### 2) 连接流程

**目标:** 连接到目标(国家/城市/分组)并进行验证。

伪逻辑:

* 运行 `nordvpn status` * 如果已断开 → 直接连接 * 如果连接到不同的目标 → `nordvpn disconnect` 然后连接 * 再次运行 `nordvpn status` 并确认已连接

命令:

```bash nordvpn connect "<target>" nordvpn status ```

### 3) 断开连接流程

```bash nordvpn disconnect nordvpn status ```

### 4) 安全解析目标

如果用户请求某个城市:

* 当已知国家时,首选 `nordvpn cities <country>` * 否则尝试连接;如果失败,则列出国家和类似搜索的建议。

```bash nordvpn countries nordvpn cities "<country>" nordvpn groups ```

## 常见错误与处理

### 未登录

症状:

* CLI 抱怨认证/账户/登录问题。

处理:

* 返回:“需要登录。运行 `nordvpn login` 并重试。” * 可选:运行 `nordvpn account` 以确认。

### 守护进程未运行 / 权限被拒绝

症状:

* 无法连接,服务错误,权限错误。

处理:

* 检查 `systemctl status nordvpnd` (systemd 安装) * 确认 snap 服务健康状况(snap 安装各不相同) * 确保用户属于正确的组(某些安装使用 `nordvpn` 组):

```bash groups getent group nordvpn || true ```

### 位置/分组无效

症状:

* “未知的 country/city/group” 或连接立即失败。

处理:

* 提供可用选项:

```bash nordvpn countries nordvpn groups nordvpn cities "<country>" ```

## 实用自动化配方

### 确保 VPN 已连接(任意服务器)

```bash nordvpn status | sed -n '1,10p' nordvpn connect nordvpn status | sed -n '1,15p' ```

### 重新连接到特定国家

```bash nordvpn disconnect nordvpn connect Sweden nordvpn status ```

### 切换开关(kill switch)(示例)

```bash nordvpn set killswitch on nordvpn settings ```

## 注意事项

* 命令选项和设置键可能因 NordVPN CLI 版本而异。请始终依赖:

```bash nordvpn help nordvpn set --help nordvpn allowlist --help ``` * 如果您需要稳定的机器可读输出,NordVPN CLI 不会持续提供 JSON;请计划防御性地解析人类可读的状态文本(基于行的键/值提取,容忍缺失字段)。

更多产品