Refactor: rename lanx-update to update-manager and clean up repo
This commit is contained in:
parent
7e5662ced4
commit
c82a8db207
4 changed files with 16 additions and 11 deletions
113
update-manager.sh
Executable file
113
update-manager.sh
Executable file
|
|
@ -0,0 +1,113 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CONFIG_FILE="/etc/update-manager.conf"
|
||||
|
||||
if [[ -f "$CONFIG_FILE" ]]; then
|
||||
# shellcheck disable=SC1090
|
||||
source "$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
HOSTS_FILE="${HOSTS_FILE:-./hosts.conf}"
|
||||
NTFY_URL="${NTFY_URL:-}"
|
||||
|
||||
check_host() {
|
||||
local name="$1"
|
||||
local ip="$2"
|
||||
local user="$3"
|
||||
local result
|
||||
|
||||
echo "===== $name ($ip) ====="
|
||||
|
||||
result=$(ssh -n -o BatchMode=yes -o ConnectTimeout=5 "${user}@${ip}" \
|
||||
"apt-get -s upgrade 2>/dev/null | grep '^Inst'")
|
||||
|
||||
if [[ -z "$result" ]]; then
|
||||
echo "[OK] Up-to-date"
|
||||
else
|
||||
echo "[UPDATES]"
|
||||
echo "$result"
|
||||
fi
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
update_host() {
|
||||
local name="$1"
|
||||
local ip="$2"
|
||||
local user="$3"
|
||||
|
||||
echo "===== $name ($ip) ====="
|
||||
|
||||
ssh -n -o BatchMode=yes -o ConnectTimeout=5 "${user}@${ip}" \
|
||||
"sudo -n apt-get update && sudo -n apt-get upgrade -y" || {
|
||||
echo "[FEJL] kunne ikke opdatere"
|
||||
}
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
autoremove_host() {
|
||||
local name="$1"
|
||||
local ip="$2"
|
||||
local user="$3"
|
||||
|
||||
echo "===== $name ($ip) ====="
|
||||
|
||||
ssh -n -o BatchMode=yes -o ConnectTimeout=5 "${user}@${ip}" \
|
||||
"sudo -n apt-get autoremove -y" || {
|
||||
echo "[FEJL] kunne ikke køre autoremove"
|
||||
}
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
full_host() {
|
||||
local name="$1"
|
||||
local ip="$2"
|
||||
local user="$3"
|
||||
|
||||
echo "===== $name ($ip) ====="
|
||||
|
||||
ssh -n -o BatchMode=yes -o ConnectTimeout=5 "${user}@${ip}" \
|
||||
"sudo -n apt-get update && sudo -n apt-get upgrade -y && sudo -n apt-get autoremove -y" || {
|
||||
echo "[FEJL] kunne ikke køre full maintenance"
|
||||
}
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
run_action() {
|
||||
local action="$1"
|
||||
|
||||
if [[ ! -f "$HOSTS_FILE" ]]; then
|
||||
echo "FEJL: hosts-fil findes ikke: $HOSTS_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while IFS='|' read -r name ip user || [[ -n "$name" ]]; do
|
||||
[[ -z "$name" || "$name" =~ ^# ]] && continue
|
||||
|
||||
case "$action" in
|
||||
check)
|
||||
check_host "$name" "$ip" "$user"
|
||||
;;
|
||||
update)
|
||||
update_host "$name" "$ip" "$user"
|
||||
;;
|
||||
autoremove)
|
||||
autoremove_host "$name" "$ip" "$user"
|
||||
;;
|
||||
full)
|
||||
full_host "$name" "$ip" "$user"
|
||||
;;
|
||||
*)
|
||||
echo "Brug: $0 {check|update|autoremove|full}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done < "$HOSTS_FILE"
|
||||
}
|
||||
|
||||
run_action "$1"
|
||||
Loading…
Add table
Add a link
Reference in a new issue