Alat baris perintah cmp
Di mana letaknya di portal: perintah instalasi berada di referensi API (
https://<your-domain>/apidoc, bagian Antarmuka baris perintah). Menyetujui login:https://<your-domain>/link. Perangkat terhubung: API keys (/api-keys) › Connected apps & devices.
Fungsi
cmp adalah program baris perintah kecil untuk pelanggan Anda (dan Anda) yang mengubah setiap operasi API menjadi sebuah perintah: cmp vm list, cmp vm start <id>, cmp billing invoice list. Program ini dibangun dari dokumen OpenAPI instalasi Anda pada saat rilis, sehingga perintahnya cocok dengan fitur yang Anda aktifkan. Ini adalah satu biner statis untuk Linux, macOS, dan Windows (amd64 serta arm64) tanpa ada hal lain yang perlu dipasang.
Persyaratan
| Item | Persyaratan |
|---|---|
| Server | Tidak ada tambahan. Paket rilis berada di dalam rilis NexCMP dan disajikan oleh panel di https://<your-domain>/cli/. |
| Mesin pelanggan | Linux, macOS, atau Windows (PowerShell 5.1+). ssh-keygen (OpenSSH 8.0+) hanya diperlukan untuk memverifikasi tanda tangan. |
| Kredensial | Login browser dengan kode sekali pakai, atau API key. |
| Jaringan | HTTPS ke panel Anda. CLI menolak mengirim kunci melalui http:// biasa kecuali ke localhost. |
Siapkan infrastruktur
Tidak ada. Panel menyajikan file-file ini dari /cli/ (tidak perlu build atau unggah):
| File | Tujuan |
|---|---|
install.sh, install.ps1 | Installer untuk Linux/macOS dan Windows; berisi alamat panel Anda. |
latest.json | Versi saat ini, daftar file, ukuran, sha256. |
v<version>/cmp_<version>_<os>_<arch>.tar.gz atau .zip | Program: linux amd64/arm64, darwin amd64/arm64/universal, windows amd64/arm64. |
v<version>/SHA256SUMS, SHA256SUMS.sig | Checksum dan tanda tangan ed25519-nya. |
cmp-cli.pub | Kunci publik rilis. |
Instal (pelanggan)
macOS dan Linux:
bash
curl -fsSL https://cloud.example.com/cli/install.sh | shWindows PowerShell:
powershell
irm https://cloud.example.com/cli/install.ps1 | iexInstaller memilih paket untuk OS dan CPU, mengunduh SHA256SUMS beserta tanda tangannya, memverifikasi tanda tangan dengan kunci yang disematkan dalam skrip, memverifikasi hash paket, dan menginstal cmp ke /usr/local/bin (sebagai root) atau ~/.local/bin; pada Windows ke %LOCALAPPDATA%\cmp\bin (ditambahkan ke PATH pengguna). Jika pemeriksaan gagal, tidak ada yang diinstal.
| Variabel | Arti |
|---|---|
CMP_VERSION | Instal versi ini alih-alih versi terbaru. |
CMP_INSTALL_DIR | Folder instalasi. |
CMP_REQUIRE_SIGNATURE | 1 = batalkan ketika tanda tangan tidak dapat diverifikasi. |
CMP_BASE_URL | Basis unduhan (untuk mirror). |
Unduh dan verifikasi manual:
bash
curl -fsSLO https://cloud.example.com/cli/latest.json
sha256sum --check --ignore-missing SHA256SUMS
Masuk
bash
cmp login- CLI mencetak kode sekali pakai dan tautan (
https://cloud.example.com/link?code=WDJB-MJHT), membuka browser, lalu menunggu. - Di browser, masuk ke portal, periksa nama klien, perangkat, IP, dan negara, centang izin (scope) dan pilih masa aktif kunci (default 90 hari). Izin yang berbayar atau menghapus data tidak dicentang secara default. Klik setujui.
- CLI menerima kuncinya sendiri, terpisah dari kunci yang dibuat pelanggan secara manual, dan menyimpannya di
~/.config/cmp/config.json(mode0600;%APPDATA%\cmppada Windows). Kunci ini muncul di bawah API keys › Connected apps & devices dan dapat dicabut di sana.
Kode kedaluwarsa setelah 10 menit. Persetujuan memerlukan sesi portal masuk yang valid dengan email yang terverifikasi — bukan kunci lain dan bukan sesi tiruan.
Flag yang berguna: --scopes vm:read,billing:read, --name "build server", --no-browser, --profile, --api-url.
Untuk CI atau server tanpa browser, gunakan kunci dari portal:
bash
printf %s "$KEY" | cmp login --with-token
export CMP_TOKEN=vk_XXXX # nothing is written to disk
cmp whoamiMenggunakan perintah
text
cmp <group> [subgroup] <action> [<id> ...] [flags]- Parameter jalur adalah argumen posisional; parameter kueri dan field body menjadi flag berformat kebab-case (
--start-port 443). --data '{"a":1}',--data @file.json, atau--data -mengirim seluruh body JSON; flag akan menimpa field-nya.cmp help vm firewall add(atau--help) menampilkan detail perintah apa pun.
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 endpointPerintah bawaan: login, logout, whoami, config, api, completion, version, update, help. Selebihnya berasal dari dokumen API.
Flag global:
| Flag | Arti |
|---|---|
-o, --output json|table|yaml | Format. Default table pada terminal dan json saat di-pipe. |
--profile, --api-url | Login dan situs tersimpan yang digunakan. |
-y, --yes | Lewati konfirmasi untuk perintah destruktif atau berbayar. |
--idempotency-key <k> | Pilih kunci untuk perintah berbayar. |
--retry <n> | Pada HTTP 429, tunggu selama Retry-After dan coba lagi hingga n kali. |
--timeout <s> | Detik untuk menunggu header respons (default 60). |
--debug | Tampilkan pertukaran HTTP pada stderr, dengan kunci yang disamarkan. |
Perintah yang mengisi dompet atau menghapus data akan meminta konfirmasi dan, jika berbayar, mengirimkan Idempotency-Key yang dibuat secara otomatis (dicetak di stderr, sehingga Anda dapat mencoba ulang dengan aman menggunakan --idempotency-key). Tanpa terminal, perintah akan menolak kecuali jika --yes disertakan.
Kode keluar
| Kode | Arti |
|---|---|
| 0 | Berhasil |
| 1 | Error lain (jaringan, HTTP 4xx/5xx yang tidak tercantum) |
| 2 | Error penggunaan |
| 3 | Tidak diotorisasi (401/403) |
| 4 | Tidak ditemukan (404) |
| 5 | Terkena batasan laju (429) |
| 6 | Konfirmasi diperlukan atau ditolak |
| 130 | Diinterupsi |
Profil dan lingkungan
cmp config mencantumkan profil; cmp config use <name> beralih profil; pelanggan reseller menggunakan domain mereka sendiri: cmp login --api-url https://shop.example.net --profile shop. Prioritas: flag, lingkungan, file konfigurasi. Variabel: 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'Penyelesaian shell: cmp completion bash|zsh|fish|powershell.
Pembaruan dan uninstal
bash
cmp version
cmp update --check
cmp updatecmp update mengunduh latest.json, SHA256SUMS beserta tanda tangannya, memverifikasi tanda tangan menggunakan kunci publik yang disematkan di dalam biner yang berjalan, memverifikasi hash paket, lalu mengganti dirinya sendiri. Downgrade memerlukan --force. Saat Anda memperbarui NexCMP, panel akan menyediakan rilis CLI yang disertakan bersama versi baru.
Untuk mengosongkan/menghapus instalasi, hapus biner cmp dan direktori konfigurasi (cmp config path menunjukkannya). Cabut kunci di bawah API keys jika mesin hilang.
Verifikasi
cmp versionmencetak versi serta versi dokumen API.cmp login, setujui di browser, lalucmp whoamimenampilkan profil dan URL panel Anda.cmp vm listmengembalikan VM Anda;cmp vm list -o json | jq .menampilkan JSON mentah.
Batas & catatan
- Daftar perintah bergantung pada build Anda: paket dihasilkan dari dokumen OpenAPI instalasi Anda saat rilis dibuild, sehingga produk yang dinonaktifkan pada rilis Anda tidak memiliki perintah. Gunakan
cmp apiuntuk jalur yang tidak dikenali oleh CLI. - CLI berada di bawah lisensi MIT.
- Setiap paket ditandatangani dengan kunci ed25519; kunci tanda tangan disematkan di dalam penginstal dan biner, tidak diambil pada saat pembaruan.
- Kunci dibatasi per kunci dan per akun (lihat REST API).
Pemecahan Masalah
| Gejala | Penyebab | Solusi |
|---|---|---|
curl .../cli/install.sh mengembalikan 404 | Rilis pada server tidak memiliki folder CLI, atau host tidak tercakup dalam lisensi | Periksa https://<domain>/cli/latest.json dan domain; perbarui NexCMP. |
| "tanda tangan tidak dapat diverifikasi" | ssh-keygen hilang atau terlalu lama | Instal OpenSSH 8.0+, atau tetapkan CMP_REQUIRE_SIGNATURE=0 hanya jika Anda menerima risikonya. |
cmp login menyatakan kode kedaluwarsa | 10 menit telah berlalu | Jalankan cmp login lagi. |
| Kode keluar 3 | Kunci tidak memiliki cakupan, sudah kedaluwarsa, atau dicabut | cmp whoami; buat atau setujui ulang dengan cakupan yang lebih luas. |
| Kode keluar 6 dalam skrip | Perintah berbayar atau destruktif tanpa terminal | Tambahkan --yes (serta --idempotency-key Anda sendiri). |
| "menolak mengirim kunci melalui http" | URL API HTTP biasa | Gunakan https://, atau CMP_ALLOW_HTTP=1 hanya untuk keperluan lab. |
| Browser membuka situs yang salah | --api-url tidak diatur untuk reseller | cmp login --api-url https://<reseller-domain>. |