Skip to main content

CLI for QNAP NAS management

Project description

qnap

A CLI for QNAP NAS management. It is designed for both interactive use and automation: human-friendly tables by default, stable JSON contracts on inspection commands, and a schema command for agent introspection.

Supported platforms: Linux and macOS.

Installation

cargo install qnap

Or build from source:

git clone https://github.com/rvben/qnap-cli
cd qnap-cli
make install

Quick Start

# Save connection settings and password
qnap login --host nas.local --username admin

# Inspect the NAS
qnap info
qnap status
qnap volumes
qnap shares
qnap files ls /Public

# Structured output for automation
qnap status --json
qnap files stat /Public/example.txt --json

Commands

Command Description
login Save credentials and verify connectivity
info Model, firmware, hostname, serial, uptime
status CPU, RAM, temperature, uptime
volumes Storage volumes and installed disks
shares Shared folders
network Network adapters, IPs, MACs, DNS (--json)
config Show saved host, username, TLS settings, and file paths (--json)
files ls <PATH> List files and directories (--all to paginate, --json)
files stat <PATH> Normalized metadata plus raw QNAP fields (--json)
files find <PATH> <PATTERN> Recursive glob search (*.txt, backup*) (--json)
files mkdir <PATH> Create a directory
files rm <PATH>... Delete one or more files or directories
files mv <SRC> <DST> Move or rename a file or directory
files cp <SRC> <DST> Copy a file or directory (--overwrite)
files upload <LOCAL> <REMOTE_DIR> Upload a file or directory (--overwrite, -r recursive)
files download <REMOTE> [LOCAL] Download a file or directory (-r recursive)
dump [DIR] Save raw API responses for debugging
schema Print full command schema

Global Flags

These flags work on every authenticated command, including login.

Flag Description
--host <HOST> Override the NAS host for one command. HTTPS only.
--username <USERNAME> Override the username for one command.
--insecure Skip TLS certificate verification for one command.
--secure Force TLS certificate verification for one command.
--password-stdin Read the password from stdin.

Examples:

printf '%s\n' 'secret-password' | qnap --password-stdin info
qnap --host https://nas.local --username admin status
qnap --secure volumes --json

Authentication

qnap login [--host <HOST>] [--username <USERNAME>] [--insecure | --secure]

qnap login verifies the credentials before saving anything. Host, username, and the saved TLS verification preference are stored in config.toml. The password is stored separately in credentials.toml.

The CLI requires HTTPS. Plain http:// targets are rejected. If your NAS uses a self-signed certificate, use --insecure or QNAP_INSECURE=1 explicitly.

If you do not want local password persistence, skip qnap login and provide QNAP_HOST, QNAP_USERNAME, and QNAP_PASSWORD directly when running commands.

JSON Output

The following commands support --json with stable, typed output:

  • info
  • status
  • volumes
  • shares
  • files ls
  • files stat

Highlights:

  • status --json uses numeric fields such as cpu_usage_pct, mem_total_mb, and temp_c.
  • volumes --json includes status_code, pool_id, and per-disk temp_c.
  • shares --json uses items_count as a number.
  • files ls --json uses size_bytes and modified_epoch.
  • files stat --json returns normalized fields plus a raw object for unnormalized QNAP metadata.

Use qnap schema for the full machine-readable command and output contract.

Environment Variables

Environment variables override local files.

Variable Description
QNAP_HOST NAS host, for example https://nas.local or nas.local
QNAP_USERNAME Username
QNAP_PASSWORD Password
QNAP_INSECURE 1/true/yes to skip TLS verification, 0/false/no to force verification
NO_COLOR Disable colored output

Stored Files

config.toml stores host, username, and TLS verification preference. credentials.toml stores the password separately in plaintext on the local machine.

Platform Config file Credentials file
macOS ~/Library/Application Support/qnap/config.toml ~/Library/Application Support/qnap/credentials.toml
Linux ~/.config/qnap/config.toml ~/.config/qnap/credentials.toml

Security

  • Passwords are never accepted as CLI flags.
  • HTTPS is required for NAS connections.
  • TLS verification is enabled by default.
  • credentials.toml is written atomically.
  • On Unix, credentials.toml is restricted to owner-only (0600) permissions.
  • On Unix, the config directory is tightened to owner-only (0700) permissions.
  • Symlink and non-regular-file credential targets are rejected.
  • If you do not want local password persistence, use environment variables or --password-stdin.

Compatibility

Tested against QTS 5.1.x and 5.2.x. The core authentication and file manager APIs have been stable since QTS 4.3, but qnap dump is the recommended way to capture compatibility issues from older or unusual firmware builds.

License

MIT

Project details


Download files

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

Source Distribution

qnap_cli-0.1.6.tar.gz (57.8 kB view details)

Uploaded Source

Built Distributions

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

qnap_cli-0.1.6-py3-none-win_amd64.whl (2.7 MB view details)

Uploaded Python 3Windows x86-64

qnap_cli-0.1.6-py3-none-manylinux_2_28_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

qnap_cli-0.1.6-py3-none-manylinux_2_28_aarch64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

qnap_cli-0.1.6-py3-none-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

qnap_cli-0.1.6-py3-none-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file qnap_cli-0.1.6.tar.gz.

File metadata

  • Download URL: qnap_cli-0.1.6.tar.gz
  • Upload date:
  • Size: 57.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qnap_cli-0.1.6.tar.gz
Algorithm Hash digest
SHA256 1053b15d6fda6f6806400e859d071fc06e1494c6fe442b7b84dcf85cf3e71dad
MD5 dd23768c35cab7710ae32b22f4a814e8
BLAKE2b-256 e91ae99873aa50e44f564a04a4ec7dadce3bf552120d70756b81839636900003

See more details on using hashes here.

File details

Details for the file qnap_cli-0.1.6-py3-none-win_amd64.whl.

File metadata

  • Download URL: qnap_cli-0.1.6-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qnap_cli-0.1.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 20248c035d5450cd49fb6117d49b639aa8a17b8e240d2fdc39cbfdcc85b5fdd7
MD5 ed929e0c9b06fac23ec6cd53d434c53c
BLAKE2b-256 ab0323f04c0e18addfd4da03c9eef97a9f966f8fcd170b8cf6db98c8fa9f22ed

See more details on using hashes here.

File details

Details for the file qnap_cli-0.1.6-py3-none-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: qnap_cli-0.1.6-py3-none-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: Python 3, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qnap_cli-0.1.6-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 016668fa4f2a734f9d849d5bb73bf34989e45abb50e09b0a2e235d0301a73d44
MD5 704cd4946b180d80a8d033c95c2817f2
BLAKE2b-256 5da95aed5f349e6d379bd4fb986fd4767c2753b8ed20b1265b4926e8b311be36

See more details on using hashes here.

File details

Details for the file qnap_cli-0.1.6-py3-none-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: qnap_cli-0.1.6-py3-none-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qnap_cli-0.1.6-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c98acd325c80b4c3a371d39a80f62a23583b40b99d4adcf3e7bd3909fb2804d
MD5 8858397417bfb5fe031f85cf4a066052
BLAKE2b-256 9321774bebb47a9e9a0fbbf21d3aedd061f7d8b8fdbc602d18d6626eca8a653d

See more details on using hashes here.

File details

Details for the file qnap_cli-0.1.6-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qnap_cli-0.1.6-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qnap_cli-0.1.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 077a058061caabc9e7bbf9bfd842a8c401f149e0c14ff38a1fa80d2fa62461f8
MD5 8778a51247c544feb5cfc6f70d325d5a
BLAKE2b-256 0e31ae0d575b0b901b391c8572a8dbede0ad00c20489c7a1617223d2a1c40350

See more details on using hashes here.

File details

Details for the file qnap_cli-0.1.6-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: qnap_cli-0.1.6-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qnap_cli-0.1.6-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6e4e1f7b46babdc39f97a985a5c44a2fc5ff84f81d7fb1235cc35f2995ef2d93
MD5 011ddaa263338aaa624ff5f46a141adb
BLAKE2b-256 2be9f626c14d69d71d8ce717b362b1b6c9ae807c97d8bc8ddd6e100644c6b11c

See more details on using hashes here.

Supported by

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