Independent, reviewed Bash modules for occasional Linux, VPS, cPanel, and system checks, plus an optional master CLI for selecting and running the installed catalog.
Every module remains standalone: download only the check you need, verify its checksum, and run it with one copyable command. Users who keep the complete catalog can use onescript as a non-interactive CLI or interactive terminal menu. The master executes modules; it does not duplicate their diagnostic logic.
- Active scripts are read-only checks. They do not install packages, restart services, delete mail, modify firewall rules, or rewrite configuration.
- Default script output does not intentionally display credentials, message contents, machine identifiers, or unredacted public network addresses. Explicit
--show-mounts,--show-units,--show-names, and--show-pathsoptions reveal only the selected local metadata. - The master uses the checked-in
catalog.tsvallowlist. It never sources modules, evaluates argument strings, downloads code, installs packages, or performs remediation. - Catalog paths are constrained to regular executable files under a real, non-linked
scripts/directory; linked catalogs, module directories, and module files are rejected. - Remote commands download a version-tagged file, verify SHA-256, and execute only after verification succeeds.
- Never use
curl -k,--insecure, or an unverifiedcurl | bashpipeline. - Run with root privileges only when a check needs complete service, process, or mail-queue visibility.
The v2.1.0 release provides the complete verified catalog: onescript, catalog.tsv, SHA256SUMS, and all 14 standalone modules under scripts/. The four original v2.0.0 modules remain unchanged while the launcher and ten Linux server diagnostics are added in v2.1.0.
Version-pinned verified checkout:
git clone --depth 1 --branch v2.1.0 https://github.com/RomeoRaven/ONEScripts.git &&
cd ONEScripts &&
sha256sum -c --strict SHA256SUMS &&
./onescript doctorVerify the installed catalog:
./onescript doctorList or inspect modules without opening a menu:
./onescript list./onescript info exim-queue-healthRun one module. Module arguments must follow -- and are passed without shell evaluation:
./onescript run directory-sizes -- --all /varRun several modules with their allowlisted safe defaults:
./onescript batch exim-queue-health cpanel-followup-triageOpen the interactive menu:
./onescript menuRunning ./onescript without arguments also opens the menu when both input and output are terminals. Non-interactive automation must use an explicit command.
run returns the selected module's status. batch preflights every selection, runs them in order, continues after module failures, and returns the first nonzero module status. Launcher usage errors return 2; catalog, installation, and lookup failures return 1.
Collects a privacy-reduced profile covering OS, resources, filesystems, cPanel, Exim, PHP, database, DNS, services, listeners, security tooling, and available administrative commands. Results are written to a local file for review before sharing.
One-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/vps-profile.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/vps-profile.sh' && printf '%s %s\n' 'd260a50a2fb3fa0af09edf310da8006246924cf4319a05ad2935c19fd91911ed' "$tmp_dir/vps-profile.sh" | sha256sum -c - && chmod 700 "$tmp_dir/vps-profile.sh" && "$tmp_dir/vps-profile.sh" ./vps-profile.txt)Reports failed systemd units, privacy-safe Exim queue counts, and bind scope for selected sensitive listeners on a cPanel VPS.
One-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/cpanel-followup-triage.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/cpanel-followup-triage.sh' && printf '%s %s\n' '5bb1e14491437c42cf6d5169186a2545176dcbbf5ba4367d84aabf0e851f0a23' "$tmp_dir/cpanel-followup-triage.sh" | sha256sum -c - && chmod 700 "$tmp_dir/cpanel-followup-triage.sh" && "$tmp_dir/cpanel-followup-triage.sh")Lists immediate subdirectories by allocated disk usage, largest first. Hidden directories are excluded unless --all is supplied.
One-line invocation for the current directory:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/directory-sizes.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/directory-sizes.sh' && printf '%s %s\n' '156ea405829ec5c27ed7a462a23e2fe9752704467c93fbc652aef205d24ca65d' "$tmp_dir/directory-sizes.sh" | sha256sum -c - && chmod 700 "$tmp_dir/directory-sizes.sh" && "$tmp_dir/directory-sizes.sh" .)Prints only total, frozen, older-than-one-hour, and older-than-one-day Exim queue counts. It does not display sender, recipient, headers, or message bodies.
One-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/exim-queue-health.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/exim-queue-health.sh' && printf '%s %s\n' 'cf4606e3cd496dd9d8ca9db1281488507e3abeb2f45f460f1af070297a3fec22' "$tmp_dir/exim-queue-health.sh" | sha256sum -c - && chmod 700 "$tmp_dir/exim-queue-health.sh" && "$tmp_dir/exim-queue-health.sh")These modules are published in v2.1.0. Findings use concise key=value output. A successful collection returns 0 even when status=warning|critical|stale; usage errors return 2, and collection failures return 1.
Reports mounted-filesystem capacity and inode pressure by index, without device or mount names by default. Default warning and critical thresholds are 85% and 95%; use --show-mounts for local diagnosis.
./scripts/filesystem-health.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/filesystem-health.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/filesystem-health.sh' && printf '%s %s\n' '0b4608698315cf1ed19b532e453ff08fe9aeab93a0a8492793217c9002c5a12f' "$tmp_dir/filesystem-health.sh" | sha256sum -c - && chmod 700 "$tmp_dir/filesystem-health.sh" && "$tmp_dir/filesystem-health.sh")Reports memory and swap use, one-minute load normalized by online CPU count, and Linux PSI values when available. It does not list processes or command lines.
./scripts/memory-pressure.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/memory-pressure.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/memory-pressure.sh' && printf '%s %s\n' '859fcefc6b631f9b63e28db8c2f58372e55adfe567e70c3d2317e609b5543d59' "$tmp_dir/memory-pressure.sh" | sha256sum -c - && chmod 700 "$tmp_dir/memory-pressure.sh" && "$tmp_dir/memory-pressure.sh")Reports aggregate systemd state and failed-unit count. Unit names remain omitted unless --show-units is explicitly supplied.
./scripts/service-health.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/service-health.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/service-health.sh' && printf '%s %s\n' 'c35c04f1f5f54eb945b46cbd6ebecb05146f02baf8f7de5bbe967c494ec5bb56' "$tmp_dir/service-health.sh" | sha256sum -c - && chmod 700 "$tmp_dir/service-health.sh" && "$tmp_dir/service-health.sh")Lists listener protocol, port, and bind scope (loopback, specific-address, or all-interfaces) without displaying literal addresses or process details.
./scripts/listener-exposure.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/listener-exposure.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/listener-exposure.sh' && printf '%s %s\n' 'a12029e59604066a57edf0bd12668a34031779d59838957d7991973580ea8c2f' "$tmp_dir/listener-exposure.sh" | sha256sum -c - && chmod 700 "$tmp_dir/listener-exposure.sh" && "$tmp_dir/listener-exposure.sh")Counts updates visible in existing APT or DNF metadata, reports deferred/kept-back APT candidates as a privacy-safe aggregate, and checks the reboot-required marker. It never refreshes metadata, lists package names, installs updates, or reboots.
./scripts/update-posture.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/update-posture.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/update-posture.sh' && printf '%s %s\n' '2bcf1ab868d6055c61b507407b424cd753894bc8d0b190e06c9a156281dbeb59' "$tmp_dir/update-posture.sh" | sha256sum -c - && chmod 700 "$tmp_dir/update-posture.sh" && "$tmp_dir/update-posture.sh")Finds the newest regular file among explicit files and immediate directory entries. It does not recurse and reports age/count only; use --show-names or --show-paths explicitly for local diagnosis.
./scripts/backup-freshness.sh --max-hours 24 /srv/backupsVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/backup-freshness.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/backup-freshness.sh' && printf '%s %s\n' 'fe3e47781e5694ebcc2c260df97bb3421fa5e13fa353c0e25e00c9ecffaf2a8b' "$tmp_dir/backup-freshness.sh" | sha256sum -c - && chmod 700 "$tmp_dir/backup-freshness.sh" && "$tmp_dir/backup-freshness.sh" /srv/backups)Probes explicit HTTP(S) endpoints and reports status and latency by input index. URLs, query strings, headers, and response bodies are omitted.
./scripts/endpoint-health.sh https://example.com/healthVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/endpoint-health.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/endpoint-health.sh' && printf '%s %s\n' '46d3961f9364b9ccf7cda154dcef52810855aaf6040ac08a416d641b014e84fb' "$tmp_dir/endpoint-health.sh" | sha256sum -c - && chmod 700 "$tmp_dir/endpoint-health.sh" && "$tmp_dir/endpoint-health.sh" https://example.com/health)Verifies explicit TLS targets and reports certificate lifetime by input index. Hostnames, addresses, subjects, and issuers are omitted.
./scripts/tls-expiry.sh example.com:443Version-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/tls-expiry.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/tls-expiry.sh' && printf '%s %s\n' 'ea624496235f3d78cd38be3173f6bb18d898d7cc25b71fe36d678459691b61f0' "$tmp_dir/tls-expiry.sh" | sha256sum -c - && chmod 700 "$tmp_dir/tls-expiry.sh" && "$tmp_dir/tls-expiry.sh" example.com:443)Reports aggregate Docker or Podman running, stopped, and unhealthy counts. Names, images, IDs, ports, labels, and commands are omitted. If Docker is installed but unavailable, a usable Podman runtime is tried.
./scripts/container-health.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/container-health.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/container-health.sh' && printf '%s %s\n' '6166f768a4f242db8e077438ebdc2736ffbafd5306dd0d1adbb1da7b0b75b26b' "$tmp_dir/container-health.sh" | sha256sum -c - && chmod 700 "$tmp_dir/container-health.sh" && "$tmp_dir/container-health.sh")Measures allocated size for explicit log directories, defaulting to /var/log, without reading log contents. Paths are omitted unless --show-paths is supplied. If permissions hide a child directory but du still returns a numeric total, the result is retained and marked collection_complete=no.
./scripts/log-storage.shVersion-pinned one-line invocation:
(tmp_dir="$(mktemp -d)" && chmod 700 "$tmp_dir" && trap 'rm -rf "$tmp_dir"' EXIT && curl -fsSLo "$tmp_dir/log-storage.sh" 'https://raw.githubusercontent.com/RomeoRaven/ONEScripts/v2.1.0/scripts/log-storage.sh' && printf '%s %s\n' '3eb2acfbbaf9643ebf50b7822fa6e6d7908f421abb7edfc2521ac5ebafa0422a' "$tmp_dir/log-storage.sh" | sha256sum -c - && chmod 700 "$tmp_dir/log-storage.sh" && "$tmp_dir/log-storage.sh" /var/log)Each version-pinned command downloads into a private temporary directory, verifies the exact v2.1.0 checksum, and executes only after verification succeeds.
After completing the version-pinned verified checkout above, run a script directly:
./scripts/vps-profile.sh ./vps-profile.txtEvery module supports --help and --version and remains directly executable without the master.
Run the behavioral suites and verify the complete installed catalog:
./tests/test-scripts.sh && ./onescript doctorRun ShellCheck:
shellcheck scripts/*.sh tests/*.sh onescriptGitHub Actions runs both checks for every push and pull request.
A new active module must:
- Be standalone and read-only by default.
- Support
--helpand--version. - Avoid credentials, private environment data, insecure TLS, and unverified remote execution.
- Include behavioral coverage where practical.
- Add one valid
catalog.tsvrow with a stable ID, category, display name, description, requirements summary, path, andyes|nosafe-default flag. - Pass Bash parsing, ShellCheck, the repository test suite, launcher tests, and checksum verification.
- Add the module checksum to
SHA256SUMS, document direct checkout use, and add a version-pinned checksum-bound remote invocation when the containing release is published.
Ordinary module additions do not require launcher code changes. Use menu_safe=no when a module cannot run meaningfully or safely without explicit arguments; it remains available through direct execution and onescript run.
Mutating or remediation scripts require an explicit design review, safe preview behavior, failure handling, and rollback evidence before inclusion.
The original CentOS 6/7/8-era scripts are retired and are not present in the active tree. Their historical state is preserved under tag legacy-centos-archive-2026-07-24. Do not use those scripts as current tooling.
MIT — see LICENSE.