Обновить vaultwarden/backuper.sh
This commit is contained in:
@@ -1,54 +1,13 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Значения по умолчанию
|
||||
MODE="host" # host или docker
|
||||
|
||||
REQUIRED_CMDS=(curl tar date)
|
||||
PKGS_MISSING=()
|
||||
|
||||
# Проверка наличия команд
|
||||
for cmd in "${REQUIRED_CMDS[@]}"; do
|
||||
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||
PKGS_MISSING+=("$cmd")
|
||||
fi
|
||||
done
|
||||
|
||||
install_packages() {
|
||||
PKGS=("$@")
|
||||
# Для Alpine
|
||||
if command -v apk >/dev/null 2>&1; then
|
||||
apk add --no-cache "${PKGS[@]}"
|
||||
# Для Debian/Ubuntu
|
||||
elif command -v apt-get >/dev/null 2>&1; then
|
||||
apt-get update && apt-get install -y "${PKGS[@]}"
|
||||
# Для Fedora
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
dnf install -y "${PKGS[@]}"
|
||||
# Для CentOS/RHEL
|
||||
elif command -v yum >/dev/null 2>&1; then
|
||||
yum install -y "${PKGS[@]}"
|
||||
# Для openSUSE
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
zypper install -y "${PKGS[@]}"
|
||||
# Для Arch
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
pacman -Sy --noconfirm "${PKGS[@]}"
|
||||
else
|
||||
echo "Не удалось определить пакетный менеджер для установки: ${PKGS[*]}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ ${#PKGS_MISSING[@]} -gt 0 ]]; then
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
echo "Зависимости отсутствуют: ${PKGS_MISSING[*]}"
|
||||
echo "Запустите скрипт от root для автоустановки!"
|
||||
exit 1
|
||||
fi
|
||||
echo "Необходимые пакеты отсутствуют: ${PKGS_MISSING[*]}"
|
||||
echo "Пробую установить..."
|
||||
install_packages "${PKGS_MISSING[@]}"
|
||||
fi
|
||||
|
||||
# ПАРСИНГ ПАРАМЕТРОВ
|
||||
# Парсинг параметров
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--token)
|
||||
@@ -59,6 +18,10 @@ while [[ $# -gt 0 ]]; do
|
||||
USER_ID="$2"
|
||||
shift 2
|
||||
;;
|
||||
--mode)
|
||||
MODE="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
@@ -67,10 +30,52 @@ while [[ $# -gt 0 ]]; do
|
||||
done
|
||||
|
||||
if [[ -z "$TOKEN" || -z "$USER_ID" ]]; then
|
||||
echo "Usage: $0 --token <TOKEN> --user_id <user_id>"
|
||||
echo "Usage: $0 --token <TOKEN> --user_id <user_id> [--mode host|docker]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверка наличия зависимостей
|
||||
for cmd in "${REQUIRED_CMDS[@]}"; do
|
||||
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||
PKGS_MISSING+=("$cmd")
|
||||
fi
|
||||
done
|
||||
|
||||
install_packages() {
|
||||
local PKGS=("$@")
|
||||
if command -v apk >/dev/null 2>&1; then
|
||||
apk add --no-cache "${PKGS[@]}"
|
||||
elif command -v apt-get >/dev/null 2>&1; then
|
||||
apt-get update && apt-get install -y "${PKGS[@]}"
|
||||
elif command -v dnf >/dev/null 2>&1; then
|
||||
dnf install -y "${PKGS[@]}"
|
||||
elif command -v yum >/dev/null 2>&1; then
|
||||
yum install -y "${PKGS[@]}"
|
||||
elif command -v zypper >/dev/null 2>&1; then
|
||||
zypper install -y "${PKGS[@]}"
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
pacman -Sy --noconfirm "${PKGS[@]}"
|
||||
else
|
||||
echo "Не удалось определить пакетный менеджер для установки: ${PKGS[*]}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ ${#PKGS_MISSING[@]} -gt 0 ]]; then
|
||||
echo "Необходимые пакеты отсутствуют: ${PKGS_MISSING[*]}"
|
||||
if [[ "$MODE" == "docker" ]]; then
|
||||
echo "Режим работы: docker (root ожидается, sudo не используется)"
|
||||
install_packages "${PKGS_MISSING[@]}"
|
||||
else
|
||||
# HOST
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
echo "Запустите скрипт с правами root (или через sudo), чтобы автоматически установить зависимости."
|
||||
exit 1
|
||||
fi
|
||||
install_packages "${PKGS_MISSING[@]}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 1. cd /
|
||||
cd /
|
||||
|
||||
|
||||
Reference in New Issue
Block a user