From 0ade2d36b43e21ec3250dfb1662be216655c9649 Mon Sep 17 00:00:00 2001 From: pvincent Date: Mon, 9 Feb 2026 10:53:56 +0400 Subject: [PATCH] pct-rename --- .vscode/extensions.json | 5 ++++ bin/pct-rename | 61 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 .vscode/extensions.json create mode 100755 bin/pct-rename diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..3367f5c --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "mads-hartmann.bash-ide-vscode" + ] +} \ No newline at end of file diff --git a/bin/pct-rename b/bin/pct-rename new file mode 100755 index 0000000..114b850 --- /dev/null +++ b/bin/pct-rename @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# CONSTANTS + +BASEDIR=$(dirname "$0") +OLDNAME='' +NEWNAME='' + +# FUNCTIONS + +function usage { + echo "usage: $(basename "$0") {current_name} {new_name}" +} + +function parse_options { + while [[ $# -gt 0 ]]; do + case "$1" in + list-bridges | list-zfs-pools | list-dir-pools) + COMMAND=$1 + ;; + --help | -h) + usage && exit 0 + ;; + *) + if [[ -z $OLDNAME ]]; then + OLDNAME=$1 + else + if [[ -z $NEWNAME ]]; then + NEWNAME=$1 + else + echo >&2 "Unknown option: $1" && usage && exit 2 + fi + fi + ;; + esac + + shift 1 # Move to the next argument + done +} + +function assert_args { + [[ -z $NEWNAME ]] && echo 'error: arguments required!' && usage && exit 10 + + if vmid=$(pct-lookup $NEWNAME 2>/dev/null); then + echo "error: new_name already used for vmid=<$vmid>!" + exit 20 + fi +} + +function rename { + vmid=$(pct-lookup $OLDNAME) + [[ ! -f /etc/pve/lxc/$vmid.conf ]] && echo "no configuration file found for vmid=<$vmid>" && exit 20 + /opt/miaou-bash/tools/append_or_replace '^hostname:.*$' "hostname: $NEWNAME" /etc/pve/lxc/$vmid.conf +} + +# MAIN + +set -Eue +parse_options $* +assert_args +rename