When a licensed service stops working — the installer menu 404s, WHM shows a red licence banner, LSCache goes cold — the first question is always the same: is the license actually valid on this server, or is something else broken? You answer it from SSH in one line per product, without logging into any web panel or reseller portal.
This is a reference for the exact command that reports license state for each product we sell — cPanel/WHM, Plesk, LiteSpeed, CloudLinux OS, Imunify360, KernelCare, JetBackup, and Softaculous. Each command forces a fresh check against the vendor's license server, so the answer reflects reality now, not a cached result from last night's cron.
The commands at a glance
| Product | Command | Reports |
|---|---|---|
| cPanel & WHM | /usr/local/cpanel/cpkeyclt | Re-fetches and validates the key |
| Plesk | plesk bin license --info | Key number, type, expiry, limits |
| LiteSpeed | /usr/local/lsws/bin/lshttpd -V | Live license verification result |
| CloudLinux OS | cldetect --check-license | Valid / no valid license found |
| Imunify360 | imunify360-agent check-license | License validity and edition |
| KernelCare | kcarectl --license-info | Key, expiry, patch-set access |
| JetBackup 5 | /usr/bin/jetbackup5 --license | Forces a license refresh |
| Softaculous | /usr/local/cpanel/scripts/softaculous --check | Active key, locked IP, expiry |
Every one of these is safe to run on a production box — none of them restart services or change configuration. The rest of this article covers what good output looks like and how to read a failure.
cPanel and WHM
cPanel ties the license to the server's main IP. To force a re-check:
/usr/local/cpanel/cpkeyclt
On a healthy server it ends with Done. Update succeeded.. A failure prints the reason —
most often an IP mismatch after a migration, which reads as the license not being valid for
this IP. For a browser check that needs no SSH access, open
https://verify.cpanel.net and enter the server's main IP.
If cpkeyclt reports the license is invalid, the fix is almost never on the server — it's
the license record pointing at the wrong IP. See
cPanel license invalid: causes and fixes for the decision tree,
and cPanel license tiers explained if you need to
confirm the account count your key allows. Activate or move a key at
cPanel licensing.
Plesk
Plesk keeps richer license metadata locally, so you can read the full key without hitting the network:
plesk bin license --info
This prints the key number, product type, expiry date, and the limits it grants (domains, whether it's a Web Admin, Web Pro, or Web Host key). To actively re-validate against the Plesk license server instead of reading the cached record:
plesk bin license -c
An expired or IP-mismatched key surfaces here before it ever shows in the panel UI. If the check fails, work through fix Plesk license errors, and if you're unsure which tier you're on, Plesk license tiers explained maps the editions to what they unlock. Buy or upgrade at Plesk licensing.
LiteSpeed
LiteSpeed's -V flag does double duty: it prints the version and runs a live license
verification against the LiteSpeed license server.
/usr/local/lsws/bin/lshttpd -V
A valid license prints [OK] License key #1 verification passed!. The serial itself lives in
/usr/local/lsws/conf/serial.no; if the file is empty or the serial is wrong, -V fails
loudly. LiteSpeed licenses are tiered by worker count and RAM, so a "verification passed"
result on an undersized key can still throttle you — LiteSpeed license tiers
covers the worker maths. See fix LiteSpeed license errors
for failed verifications, and LiteSpeed licensing to change tiers.
CloudLinux OS
cldetect --check-license
Returns a valid result with the date of the last successful check, or No valid license found. CloudLinux supports both IP-based and key-based (activation key) licensing, and the
re-registration command differs by type:
# IP-based license
clnreg_ks --force
# key-based license
rhnreg_ks --activationkey=<your-activation-key>
A "no valid license" result after a server move almost always means the IP-based license hasn't been re-pointed. CloudLinux license not registered walks the registration path; CloudLinux license tiers explained covers Solo vs the per-server editions. Activate at CloudLinux licensing.
Imunify360
The agent has a dedicated license subcommand:
imunify360-agent check-license
Add --json for machine-readable output, useful when you're scripting a fleet health check.
For the broader agent state — is it running, connected, and licensed — use:
imunify360-agent status
More at fix Imunify360 license errors and Imunify360 license tiers explained. Licensing lives at Imunify360 licensing.
KernelCare
/usr/bin/kcarectl --license-info
This prints the registered key, its expiry, and which patch sets it grants access to.
kcarectl --info is the related command for the patch state — which kernel patch level is
applied — but it's --license-info you want when the question is specifically about the
license. A lapsed KernelCare key silently stops delivering new patches while the last-applied
set stays live, so a server can look patched and still be exposed to newer CVEs. Details in
upgrade KernelCare agent and ePortal; buy at
KernelCare licensing.
JetBackup 5
JetBackup validates automatically every 48 hours, so a stale license can persist for up to two days before backups start failing. Force an immediate refresh:
/usr/bin/jetbackup5 --license
If the server's public IP was misdetected (common behind NAT or with dual-stack), pin the family:
/usr/bin/jetbackup5 --license-force-ip 4
The current license state is also visible in the panel under JetBackup → Settings → License. JetBackup 5 license tiers covers the account-count editions; activate at JetBackup licensing.
Softaculous
/usr/local/cpanel/scripts/softaculous --check
Prints the active key, the locked IP or hostname, and the expiry. Because Softaculous is IP-locked, this is the fastest way to confirm the lock matches the server's real egress address after any network change — see move a Softaculous license to a new IP if it doesn't. For the "license file not found" failure specifically, go to fix Softaculous license file not found. Tiers at Softaculous license tiers explained; buy at Softaculous licensing.
What a failed check usually means
Across every product, a license that was working and suddenly isn't points at one of a small set of causes:
- IP changed. Server migration, a new WAN address, or a floating IP failover. The license record still points at the old IP. This is the single most common cause — fix it in your reseller portal or client area, then re-run the check command above. For keys bought through panellicense, the IP is editable under Services → My Licenses → Manage.
- Behind NAT.
curl -s ifconfig.mefrom the server returns a different address than the license is locked to. Lock to the egress IP, not the internal one. - Expired. The check reports an expiry in the past. Renew before re-running.
- Agent or service stopped. The license is fine but the product isn't running — most relevant for Imunify360 and JetBackup. Check the service, not the license.