#!/bin/bash set -eu set -o noglob fatal() { local MSG="${1}" >&2 echo "[!] ${MSG}" exit 1 } info() { local MSG="${1}" echo "[-] ${MSG}" } fetch() { local -r URL="$1" local -r OUTFILE="$2" local WGET_BINARY="/usr/bin/wget" local WGET_CMD="$WGET_BINARY -q --tries=3 --user-agent=PGA_installer" local CURL_BINARY="/usr/bin/curl" local CURL_CMD="$CURL_BINARY -sf -L --retry 3 --user-agent=PGA_installer" if [[ -x "${WGET_BINARY}" ]] then $WGET_CMD -O "$OUTFILE" "${URL}" || return 2 return 0 fi if [[ -x "${CURL_BINARY}" ]] then $CURL_CMD -o "$OUTFILE" "${URL}" || return 2 return 0 fi echo "Not found: $WGET_BINARY or $CURL_BINARY" >&2 return 1 } # Загрузка исполняемого файла гостевого агента и скрипта его обновления install_pga_files() { local PGA_UPDATER="/etc/cron.daily/phoenix-ga-updater" local PGA_UPDATER_URL="http://updates.netangels.ru/phoenix-ga/updater" [[ -e "${PGA_UPDATER}" ]] && { fatal "${PGA_UPDATER} already exists" } info "Downloading ${PGA_UPDATER}" fetch ${PGA_UPDATER_URL} ${PGA_UPDATER} || { fatal "Failed to download ${PGA_UPDATER}" } chmod +x ${PGA_UPDATER} info "Downloading guest agent via ${PGA_UPDATER}" ${PGA_UPDATER} now } # Создание сервиса для systemd и его запуск install_pga_systemd() { info "Systemd detected" info "Checking \`systemctl\` binary" local SYSTEMCTL_BINARY=$(which systemctl) [[ -n "$SYSTEMCTL_BINARY" ]] || { fatal "Can't find systemctl binary" } local PGA_SERVICE_FILE="/etc/systemd/system/phoenix-ga.service" info "Checking ${PGA_SERVICE_FILE}" [[ -e "${PGA_SERVICE_FILE}" ]] && { fatal "${PGA_SERVICE_FILE} already exists" } info "Creating ${PGA_SERVICE_FILE}" cat > ${PGA_SERVICE_FILE} < ${PGA_INIT_FILE} <> ${INITTAB_FILE} </dev/null pgrep phoenix-ga || { fatal "Failed to start guest agent" } info "Guest agent succesfully started" exit 0