v0.5 | 96 system management scripts for all Linux distributions
wget -qO - https://raw.githubusercontent.com/sorglos-it/ulh/main/install.sh | bash && cd ~/ulh && bash ulh.shcurl -sSL https://raw.githubusercontent.com/sorglos-it/ulh/main/install.sh | bash && cd ~/ulh && bash ulh.shgit clone https://github.com/sorglos-it/ulh.git
cd ulh
bash ulh.shDeploy by cloning, not by copying. Copying the files from a Windows machine (SMB, SCP, rsync from a checked-out working copy) can carry CRLF line endings along, and the target then fails with
/bin/bash^M: bad interpreter. A clone is always LF (enforced by.gitattributes) and keeps the auto-update working. Already hit it?find . -type f \( -name '*.sh' -o -name '*.yaml' \) -exec sed -i 's/\r$//' {} +
- Multi-Distribution - Debian, Ubuntu, Red Hat, Arch, SUSE, Alpine, Proxmox
- 96 Scripts - Network, system management, web servers, databases, languages, tools
- Search - Press
s(or type/term) in any menu, jump straight to the script's actions - Auto-Updates - Self-updates on startup with transparent restart
- Custom Repos - Clone your own script repositories with git authentication (SSH, Token, Basic Auth)
- Per-Action Automation - answer.yaml enables automated execution for specific script actions
- Interactive Menu - Clean, intuitive box-based CLI interface
- All Distros - Every script supports all 5 major distribution families
- Zero Dependencies - Just bash, git, and standard Linux tools
cd ~/ulh
bash ulh.shMenu flow:
1. Repository Selector
ββ ulh Scripts
β ββ Categories
β ββ Scripts
β ββ Actions
ββ Custom Repos
ββ Scripts
ββ Actions
Instead of walking the categories, press s in the repository, category or
script menu - or type /term directly at the prompt:
Choose: /spool
+==============================================================================+
| Search: spool |
+==============================================================================+
|
| 1) spoolman System Management Spoolman filament spool ma..
|
+==============================================================================+
| s) Search (or /term) |
| b) Back |
| q) Quit ubuntu (debian) Β· v24.04 |
+==============================================================================+
Choose: 1 -> straight into spoolman's actions, ready to run
Matches script name, description and category (case-insensitive), and only lists
scripts that work on your distribution. Picking a number jumps directly into that
script's action menu, so you can run it right away. s inside the results starts
a new search, b goes back.
See SCRIPTS.md for the complete reference and TREE.md for the file map (which script lives where, with actions and supported distros).
Define defaults and enable per-action automation:
# custom/answer.yaml
scripts:
ubuntu:
install:
- default: "no" # Interactive: user sees prompt
pro:
autoscript: true # Automated: no prompts
answers:
- default: "token123"Works for both system and custom repo scripts. See DOCS.md for details.
Add your own script repositories with git authentication:
# custom/repo.yaml
repositories:
my-scripts:
name: "My Custom Scripts"
url: "git@github.com:user/my-scripts.git"
path: "my-scripts"
auth_method: "ssh"
enabled: # Show in menu
auto_update: # Auto-pull on startupAuthentication Methods: SSH (with custom/keys/), HTTPS Token, Basic Auth, or none.
See DOCS.md#custom-repositories for complete setup guide.
ulh/
βββ ulh.sh # Entry point (self-updating)
βββ lib/ # 7 focused libraries
βββ scripts/ # 96 system management scripts + custom repos
βββ custom/ # Your custom repos
βββ config.yaml # System scripts config
βββ README.md # This file
βββ DOCS.md # Comprehensive guide
βββ SCRIPTS.md # Script reference
βββ TREE.md # File map: what lives where
Full annotated tree with every script, its path, actions and distros: TREE.md.
- DOCS.md - Complete guide: architecture, configuration, templates, troubleshooting
- SCRIPTS.md - All 96 scripts with categories and descriptions
- TREE.md - File map: paths, actions, sudo and distro support per script
- β Debian / Ubuntu / Linux Mint
- β Red Hat / Fedora / CentOS / Rocky / AlmaLinux
- β Arch / Manjaro
- β SUSE / openSUSE
- β Alpine
- β Proxmox VE
β οΈ PiKVM v3 (Arch-based appliance, limited package management)
- Linux (any major distro)
- Bash 4.0+
- Git
sudoaccess (for system-level operations)
- Install:
bash install.shor clone repo - Run:
bash ulh.sh - Select: Choose System Management or Custom Repo
- Navigate: Category β Script β Action
- Configure: Follow prompts (or accept defaults)
- Scripts run individually with sudo (ulh stays unprivileged)
- SSH keys stored in custom/keys/ (protected by .gitignore)
- No hardcoded credentials (use environment variables)
- All scripts pass syntax validation (bash -n)
To add scripts to your custom repository:
mkdir -p custom/myrepo/scripts
cp scripts/_template.sh custom/myrepo/scripts/my-script.shSee DOCS.md - Script Development for detailed guide and how to integrate custom repositories.
Contributions welcome! See DOCS.md for script development guidelines.
MIT License - Free for personal and commercial use
Questions? Check DOCS.md or open an issue on GitHub.
If ulh helps you save time and reduces your Linux headaches, consider supporting the project:
Curious how "unknown linux helper" came to be? Read BACKSTORY.md β the chaotic naming odyssey featuring Kevin, the Unknown Man, and why naming things is impossible.
