1
0

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:

  • apt
  • yum
  • pkg
  • pacman
  • apk
  • reboot
  • cmd:<remote command>
  • docker-stacks:<directory>

Requirements

Required locally:

  • bash
  • ssh
  • whiptail
  • core utilities such as cat, tee, rm, touch, and mv

Optional log viewer:

  • $EDITOR if it points to an installed command
  • otherwise one of: nano, vi, less

Remote hosts must also provide the commands needed by the configured actions, such as: apt-get, yum, pkg, pacman, apk, docker, docker compose, or reboot.

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 managers
  • configfilename: path to a config file

Notes

  • SSH connections use root@host by default and can be changed with SSH_USER in 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 $EDITOR when available, otherwise with nano, vi, or less
  • 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
S
Description
No description provided
Readme 169 KiB
Languages
Shell 100%