---
title: cmp कमांड-लाइन टूल
description: अपने पैनल द्वारा प्रदान किए गए cmp CLI को इंस्टॉल करें और उपयोग करें: एक-बार के कोड के साथ ब्राउज़र लॉगिन, API से उत्पन्न कमांड, आउटपुट और निकास कोड, CI उपयोग और हस्ताक्षरित अपडेट।
url: https://nexcmp.com/hi/docs/developers/cmp-cli/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# `cmp` कमांड-लाइन टूल {#cmp-command-line-tool}

> **पोर्टल में कहाँ:** इंस्टॉल कमांड API संदर्भ पर हैं (`https://<your-domain>/apidoc`, कमांड-लाइन इंटरफ़ेस अनुभाग)। लॉगिन स्वीकृत करना: `https://<your-domain>/link`। कनेक्टेड डिवाइस: API keys (`/api-keys`) › Connected apps & devices।

## यह क्या करता है {#what-it-does}

`cmp` आपके ग्राहकों (और आपके) के लिए एक छोटा कमांड-लाइन प्रोग्राम है जो **हर API ऑपरेशन को एक कमांड** में बदल देता है: `cmp vm list`, `cmp vm start <id>`, `cmp billing invoice list`। यह रिलीज़ के समय **आपके** इंस्टॉलेशन के OpenAPI दस्तावेज़ से बनाया जाता है, इसलिए कमांड आपके द्वारा सक्षम की गई सुविधाओं से मेल खाते हैं। यह Linux, macOS और Windows (amd64 और arm64) के लिए एक स्थिर बाइनरी है जिसमें इंस्टॉल करने के लिए और कुछ नहीं चाहिए।

## आवश्यकताएं {#requirements}

| आइटम | आवश्यकता |
|---|---|
| सर्वर | कुछ भी अतिरिक्त नहीं। रिलीज़ पैकेज NexCMP रिलीज़ के भीतर हैं और `https://<your-domain>/cli/` पर पैनल द्वारा परोसे जाते हैं। |
| ग्राहक मशीन | Linux, macOS या Windows (PowerShell 5.1+)। हस्ताक्षर सत्यापित करने के लिए केवल `ssh-keygen` (OpenSSH 8.0+) की आवश्यकता है। |
| क्रेडेंशियल्स | वन-टाइम कोड के साथ ब्राउज़र लॉगिन, या [API key](https://nexcmp.com/hi/docs/developers/api-keys/)। |
| नेटवर्क | आपके पैनल के लिए HTTPS। CLI सादे `http://` पर कुंजियाँ भेजने से इनकार करता है, सिवाय `localhost` के। |

## बुनियादी ढांचा तैयार करें {#prepare-the-infrastructure}

कुछ नहीं। पैनल इन फ़ाइलों को `/cli/` से सर्व करता है (किसी बिल्ड या अपलोड की आवश्यकता नहीं है):

| फ़ाइल | उद्देश्य |
|---|---|
| `install.sh`, `install.ps1` | Linux/macOS और Windows के लिए इंस्टॉलर्स; इनमें आपके पैनल का पता होता है। |
| `latest.json` | वर्तमान संस्करण, फ़ाइल सूची, आकार, sha256। |
| `v<version>/cmp_<version>_<os>_<arch>.tar.gz` या `.zip` | प्रोग्राम्स: linux amd64/arm64, darwin amd64/arm64/universal, windows amd64/arm64। |
| `v<version>/SHA256SUMS`, `SHA256SUMS.sig` | चेकसम और उनके ed25519 हस्ताक्षर। |
| `cmp-cli.pub` | रिलीज़ सार्वजनिक कुंजी। |

## इंस्टॉल (ग्राहक) {#install-customer}

macOS और Linux:

```bash
curl -fsSL https://cloud.example.com/cli/install.sh | sh
```

Windows PowerShell:

```powershell
irm https://cloud.example.com/cli/install.ps1 | iex
```

इंस्टॉलर OS और CPU के लिए पैकेज चुनता है, `SHA256SUMS` और उसके हस्ताक्षर को डाउनलोड करता है, स्क्रिप्ट में एम्बेड की गई कुंजी से हस्ताक्षर को सत्यापित करता है, पैकेज हैश को सत्यापित करता है, और `cmp` को `/usr/local/bin` (root के रूप में) या `~/.local/bin` में इंस्टॉल करता है; Windows पर `%LOCALAPPDATA%\cmp\bin` में (उपयोगकर्ता `PATH` में जोड़ा गया)। यदि कोई जाँच विफल हो जाती है तो कुछ भी इंस्टॉल नहीं होता है।

| वेरिएबल | अर्थ |
|---|---|
| `CMP_VERSION` | नवीनतम के बजाय यह संस्करण इंस्टॉल करें। |
| `CMP_INSTALL_DIR` | इंस्टॉलेशन फ़ोल्डर। |
| `CMP_REQUIRE_SIGNATURE` | `1` = जब हस्ताक्षर सत्यापित न हो सके तो रद्द करें। |
| `CMP_BASE_URL` | डाउनलोड बेस (मिरर्स के लिए)। |

मैनुअल डाउनलोड और सत्यापन:

```bash
curl -fsSLO https://cloud.example.com/cli/latest.json
sha256sum --check --ignore-missing SHA256SUMS
```

![macOS और Linux के लिए cmp install कमांड के साथ API reference section](https://nexcmp.com/hi/docs/images/developers/cmp-cli-01-install.webp)

## लॉग इन करें {#log-in}

```bash
cmp login
```

1. CLI एक वन-टाइम **कोड** और एक लिंक (`https://cloud.example.com/link?code=WDJB-MJHT`) प्रिंट करता है, ब्राउज़र खोलता है और प्रतीक्षा करता है।
2. ब्राउज़र में पोर्टल पर साइन इन करें, क्लाइंट नाम, डिवाइस, IP और देश की जाँच करें, अनुमतियों (scopes) पर टिक करें और चुनें कि कुंजी कितने समय तक जीवित रहेगी (डिफ़ॉल्ट 90 दिन)। जो अनुमतियाँ पैसे खर्च करती हैं या डेटा हटाती हैं, वे बिना टिक के शुरू होती हैं। approve पर क्लिक करें।
3. CLI **अपनी खुद की कुंजी** प्राप्त करता है, जो ग्राहक द्वारा हाथ से बनाई गई कुंजियों से अलग होती है, और इसे `~/.config/cmp/config.json` में संग्रहीत करता है (मोड `0600`; Windows पर `%APPDATA%\cmp`)। यह **API keys › Connected apps & devices** के तहत दिखाई देता है और वहाँ इसे निरस्त किया जा सकता है।

कोड 10 मिनट के बाद समाप्त हो जाता है। अनुमोदन के लिए एक सत्यापित ई-मेल के साथ एक वास्तविक साइन-इन पोर्टल सत्र की आवश्यकता होती है — न कि किसी अन्य कुंजी और न ही किसी छद्म सत्र (impersonated session) की।

उपयोगी फ़्लैग: `--scopes vm:read,billing:read`, `--name "build server"`, `--no-browser`, `--profile`, `--api-url`।

CI या बिना ब्राउज़र वाले सर्वर के लिए, पोर्टल से किसी कुंजी का उपयोग करें:

```bash
printf %s "$KEY" | cmp login --with-token
export CMP_TOKEN=vk_XXXX      # nothing is written to disk
cmp whoami
```

## कमांड का उपयोग करना {#using-commands}

```text
cmp <group> [subgroup] <action> [<id> ...] [flags]
```

- पाथ पैरामीटर पोजीशनल आर्ग्यूमेंट हैं; क्वेरी पैरामीटर और बॉडी फ़ील्ड kebab-case फ़्लैग बन जाते हैं (`--start-port 443`)।
- `--data '{"a":1}'`, `--data @file.json` या `--data -` एक संपूर्ण JSON बॉडी भेजता है; फ़्लैग इसके फ़ील्ड्स को ओवरराइड करते हैं।
- `cmp help vm firewall add` (या `--help`) किसी भी कमांड का विवरण दिखाता है।

```bash
cmp catalog plans
cmp vm list --state active --per-page 50
cmp vm get 3f2a1c9e-0000-4000-8000-000000000000
cmp vm start 3f2a1c9e-0000-4000-8000-000000000000
cmp vm firewall add 3f2a1c9e-... --protocol tcp --start-port 22 --cidr-list 203.0.113.0/24
cmp billing wallet
cmp api GET /v1/vm --query page=2      # raw call to any endpoint
```

अंतर्निहित कमांड: `login`, `logout`, `whoami`, `config`, `api`, `completion`, `version`, `update`, `help`। बाकी सब कुछ API डॉक्यूमेंट से आता है।

वैश्विक फ़्लैग:

| फ़्लैग | अर्थ |
|---|---|
| `-o, --output json\|table\|yaml` | प्रारूप। टर्मिनल पर डिफ़ॉल्ट `table` और पाइप करने पर `json`। |
| `--profile`, `--api-url` | कौन सा संग्रहीत लॉगिन और कौन सी साइट। |
| `-y, --yes` | विनाशकारी या सशुल्क कमांड के लिए पुष्टि छोड़ें। |
| `--idempotency-key <k>` | सशुल्क कमांड की कुंजी चुनें। |
| `--retry <n>` | HTTP 429 पर `Retry-After` की प्रतीक्षा करें और n बार तक पुनः प्रयास करें। |
| `--timeout <s>` | प्रतिक्रिया हेडर की प्रतीक्षा करने के लिए सेकंड (डिफ़ॉल्ट 60)। |
| `--debug` | कुंजियों को मास्क करके, stderr पर HTTP एक्सचेंज दिखाएं। |

जो कमांड **वॉलेट से शुल्क लेती हैं या डेटा हटाती हैं**, वे पुष्टि मांगती हैं और यदि भुगतान किया गया है, तो एक स्वतः जनरेटेड `Idempotency-Key` भेजती हैं (जिसे stderr पर प्रिंट किया जाता है, ताकि आप `--idempotency-key` के साथ सुरक्षित रूप से पुनः प्रयास कर सकें)। टर्मिनल के बिना वे मना कर देती हैं जब तक कि `--yes` न दिया गया हो।

### निकास कोड {#exit-codes}

| कोड | अर्थ |
|---|---|
| 0 | सफलता |
| 1 | अन्य त्रुटि (नेटवर्क, HTTP 4xx/5xx सूचीबद्ध नहीं) |
| 2 | उपयोग त्रुटि |
| 3 | अधिकृत नहीं (401/403) |
| 4 | नहीं मिला (404) |
| 5 | दर सीमित (429) |
| 6 | पुष्टि आवश्यक है या अस्वीकार कर दी गई |
| 130 | बाधित |

### प्रोफ़ाइल और पर्यावरण {#profiles-and-environment}

`cmp config` प्रोफ़ाइल की सूची देता है; `cmp config use <name>` स्विच करता है; एक पुनर्विक्रेता के ग्राहक अपने स्वयं के डोमेन का उपयोग करते हैं: `cmp login --api-url https://shop.example.net --profile shop`। प्राथमिकता: फ़्लैग, पर्यावरण, कॉन्फ़िगरेशन फ़ाइल। चर: `CMP_TOKEN`, `CMP_PROFILE`, `CMP_API_URL`, `CMP_OUTPUT`, `CMP_CONFIG_DIR`, `CMP_ALLOW_HTTP`, `CMP_UPDATE_URL`।

GitHub Actions:

```yaml
- name: Install cmp
  run: |
    curl -fsSL https://cloud.example.com/cli/install.sh | CMP_INSTALL_DIR="$RUNNER_TEMP/bin" sh
    echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH"
- name: List running VMs
  env:
    CMP_TOKEN: ${{ secrets.CMP_TOKEN }}   # a read-only key
  run: cmp vm list -o json | jq -r '.items[] | select(.cs_state=="Running") | .hostname'
```

शेल पूर्णता: `cmp completion bash|zsh|fish|powershell`।

## अद्यतन और अनइंस्टॉल {#update-and-uninstall}

```bash
cmp version
cmp update --check
cmp update
```

`cmp update` `latest.json`, `SHA256SUMS` और हस्ताक्षर को डाउनलोड करता है, **रनिंग बाइनरी में अंतर्निहित** सार्वजनिक कुंजी के साथ हस्ताक्षर को सत्यापित करता है, पैकेज हैश को सत्यापित करता है और उसके बाद ही खुद को बदलता है। डाउनग्रेड के लिए `--force` की आवश्यकता होती है। जब आप NexCMP को अपडेट करते हैं, तो पैनल नए संस्करण के साथ आने वाले CLI रिलीज़ को सर्व करता है।

अनइंस्टॉल करने के लिए `cmp` बाइनरी और कॉन्फ़िगरेशन निर्देशिका (`cmp config path` इसे दिखाता है) को हटा दें। यदि मशीन खो जाती है तो **API keys** के तहत कुंजी को निरस्त करें।

## सत्यापित करें {#verify}

1. `cmp version` संस्करण और API दस्तावेज़ संस्करण प्रिंट करता है।
2. `cmp login`, ब्राउज़र में स्वीकृत करें, फिर `cmp whoami` प्रोफ़ाइल और आपके पैनल का URL दिखाता है।
3. `cmp vm list` आपके VM लौटाता है; `cmp vm list -o json | jq .` कच्चा JSON दिखाता है।

## Limits & notes {#limits-notes}

- कमांड सूची आपके बिल्ड पर निर्भर करती है: रिलीज़ बनने पर पैकेज आपके इंस्टॉलेशन के OpenAPI दस्तावेज़ से जनरेट होते हैं, इसलिए आपके रिलीज़ में अक्षम उत्पाद की कोई कमांड नहीं होती है। ऐसे पथ के लिए `cmp api` का उपयोग करें जिसे CLI नहीं जानता है।
- CLI MIT लाइसेंस के अंतर्गत है।
- प्रत्येक पैकेज एक ed25519 कुंजी के साथ हस्ताक्षरित होता है; हस्ताक्षर कुंजी इंस्टॉलर और बाइनरी के अंदर पिन की जाती है, न कि अपडेट के समय लाई जाती है।
- कुंजियाँ प्रति कुंजी और प्रति खाता सीमित हैं (देखें [REST API](https://nexcmp.com/hi/docs/developers/api/#rate-limits))।

## ट्रबलशूटिंग {#troubleshooting}

| लक्षण | कारण | सुधार |
|---|---|---|
| `curl .../cli/install.sh` 404 लौटाता है | सर्वर पर रिलीज़ में कोई CLI फ़ोल्डर नहीं है, या होस्ट लाइसेंस पर नहीं है | `https://<domain>/cli/latest.json` और डोमेन की जाँच करें; NexCMP को अपडेट करें। |
| "हस्ताक्षर सत्यापित नहीं किया जा सका" | `ssh-keygen` गायब है या बहुत पुराना है | OpenSSH 8.0+ स्थापित करें, या जोखिम स्वीकार करने पर ही `CMP_REQUIRE_SIGNATURE=0` सेट करें। |
| `cmp login` कहता है कि कोड समाप्त हो गया है | 10 मिनट बीत गए | `cmp login` को फिर से चलाएँ। |
| निकास कोड 3 | कुंजी में कोई दायरा नहीं है, समाप्त हो गई है या निरस्त कर दी गई है | `cmp whoami`; अधिक दायरों के साथ बनाएँ या पुनः स्वीकृत करें। |
| स्क्रिप्ट में निकास कोड 6 | टर्मिनल के बिना भुगतान किया गया या विनाशकारी कमांड | `--yes` (और अपना स्वयं का `--idempotency-key`) जोड़ें। |
| "http पर कुंजी भेजने से मना करता है" | सादा http API URL | `https://` का उपयोग करें, या किसी लैब के लिए ही `CMP_ALLOW_HTTP=1` का उपयोग करें। |
| ब्राउज़र गलत साइट खोलता है | पुनर्विक्रेता के लिए `--api-url` सेट नहीं है | `cmp login --api-url https://<reseller-domain>`. |


