e2b3a0a88d43708947d475c42da72d29b06f2207
Use apt-get autoremove --purge instead of a separate empty purge step, and pass the CLI yes flag through to apk upgrade so the logged commands match actual behavior.
netupgrade
Interactive CLI tool to run upgrade and maintenance actions on multiple remote hosts over SSH.
Where to use
- On a dedicated server (bastion, jump host, ...)
- On your computer with an alias to your dedicated server
- On your computer directly (not recommended)
Features
- Select one or more hosts from an interactive checklist
- Run predefined actions on each selected host
- Write execution logs to
~/netupgrade.log
Supported actions:
aptyumpkgpacmanapkrebootcmd:<remote command>docker-stacks:<directory>
Requirements
Required:
bashsshwhiptailsedtee- core utilities such as
rmandtouch
Optional log viewer:
$EDITORif it points to an installed command- otherwise one of:
nano,vi,less
Install
Install the executable
cp bin/netupgrade /usr/local/bin/netupgrade
chmod +x /usr/local/bin/netupgrade
Create the config directory
mkdir -p ~/.config/netupgrade
touch ~/.config/netupgrade/index.cfg
Alias on your computer with a dedicated server
You can save it in your .bashrc
alias netupgrade='ssh -t user@10.0.0.10 netupgrade'
Configuration
The default config file is:
~/.config/netupgrade/index.cfg
The script sources this file as Bash code. It must define a NODES array.
Each entry uses this format:
host;display-name;action1;action2;...
Example:
SSH_USER="root"
NODES=(
"192.168.1.10;web-01;apt;reboot"
"192.168.1.11;db-01;apt;cmd:systemctl restart postgresql"
"192.168.1.12;docker-01;docker-stacks:/opt/stacks"
)
Usage
netupgrade [--help] [-f] [-y] [configfilename]
Options:
--help: show help-f: preselect all nodes in the interactive checklist-y: pass non-interactive confirmation flags to supported package managersconfigfilename: path to a config file
Notes
- SSH connections use
root@hostby default and can be changed withSSH_USERin the config file cmd:<remote command>is executed through a remote shell, so shell operators such as pipes, redirections,&&, and||are supported- The tool is interactive and intended for manual administration workflows
- After execution, the log file is opened with
$EDITORwhen available, otherwise withnano,vi, orless - If no supported log viewer is available, the script keeps running and prints the log file path
- The configuration file is sourced as shell code, so only use trusted config files
Languages
Shell
100%