Small utilities for DevOps, IT operations, security work, migrations, and self-hosted infrastructure. Each tool lives in its own folder with its documentation, examples, safeguards, and tests.
- Quick start
- Tool catalog
- Status and safety
- Compatibility
- Configuration rules
- Local checks
- Adding a tool
- License
Clone the repository, choose one tool, and read that tool's README before running it:
git clone https://github.com/Duresa7/tools-and-scripts.git
cd tools-and-scripts
python -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-dev.txtPowerShell uses a different activation command:
git clone https://github.com/Duresa7/tools-and-scripts.git
Set-Location tools-and-scripts
py -m venv .venv
.\.venv\Scripts\Activate.ps1
py -m pip install -r requirements-dev.txtYou don't need the whole repository to run one tool. Download its folder and keep the files together.
Run the complete repository check before editing or sharing a tool:
python check.py- NetworkManager cutover: move a Linux interface to a prepared NetworkManager profile, verify its exact address, route, and DNS state, and restore the prior network configuration after a failed cutover.
- Prometheus target check: compare the active-target API with an expected set and reject missing, duplicate, unexpected, forbidden, or unhealthy targets.
- Semaphore SQLite guard: create an online SQLite backup and compare Semaphore records without printing stored credentials.
- TeamSpeak channel migration: export a channel tree through ClientQuery and recreate it through ServerQuery with a dry-run import path.
- SSH key rotation: audit, stage, verify, and retire public keys across POSIX and Windows targets with an allowlist and a gated retirement step.
"Locally checked" means automated tests and static checks cover the code path. It does not claim that a tool has passed the full operating-system matrix on dedicated machines.
| Tool | Platform | Runtime | Privilege | Changes state | Preview | Rollback | Tested status |
|---|---|---|---|---|---|---|---|
| NetworkManager cutover | Linux | Bash 4+ | Elevation for cutover | Network files, profiles, services | Yes | Automatic on failed validation | Locally checked; live matrix pending |
| Prometheus target check | Linux, macOS, Windows | Python 3.11+ | Ordinary user | No | Read-only command | Not applicable | Locally checked; live matrix pending |
| Semaphore SQLite guard | Linux, macOS, Windows | Python 3.11+ | Read access to database; write access to backup folder | Creates a backup file | Comparison is read-only | Original database is never replaced | Locally checked; live matrix pending |
| TeamSpeak channel migration | Linux, macOS, Windows | Python 3.11+ | Query accounts only | Export writes JSON; import creates channels | Import dry run | Keep the export and remove created channels manually | Locally checked; live matrix pending |
| SSH key rotation | Linux controller; POSIX and Windows targets | Ansible Core 2.17+ | Per-target settings | Authorized-key files | Audit and check mode | Replacement is verified before retirement | Locally checked; live matrix pending |
Every state-changing tool documents the exact confirmation, backup, and rollback behavior in its own README. Don't test network cutovers, key retirement, or channel creation against an active system that can't tolerate interruption.
Compatibility validation separates completed local checks from the pending Debian 13, Ubuntu 24.04, Rocky 10, Windows 11, and Windows Server 2025 live matrix. No live compatibility claim is complete until every required scenario has a sanitized passing record.
- Copy an annotated example to its ignored local filename before editing it.
- Search examples for
CUSTOMIZE:. Each marker identifies a value owned by your environment. - Keep credentials out of command history and configuration files. Tools read secrets from named environment variables or hidden prompts.
- Prefer an ordinary login account. Apply
sudo, Ansiblebecome, or Windows elevation only to the write that requires it. - Command-line values override local configuration. Local configuration overrides documented defaults.
Examples use RFC 5737 addresses such as 192.0.2.10; those addresses aren't live systems.
python check.py is the only complete verification command. It runs the Python tests and formatter checks, compiles Python files, parses Markdown links and example configurations, checks every command's help, validates Bash and PowerShell syntax, runs ShellCheck, validates and lints the Ansible project, checks every Ansible playbook's syntax, and scans the complete Git history with Gitleaks.
python -m pip install -r requirements-dev.txt
python check.pyThe command doesn't skip a missing checker. It fails with the required installation step. On Windows, Bash, ShellCheck, Ansible Core, and Ansible Lint run inside WSL because Ansible controllers are Linux-based.
Future tool template defines the folder layout, required README sections, configuration rules, safety metadata, comment policy, and minimum tests.