Add SSH monitoring server installer #3

Open
ochenstarik-ui wants to merge 15 commits from agent/server-monitor-installer into main
Showing only changes of commit 29afdbeb6d - Show all commits

View file

@ -27,8 +27,17 @@ detect_system() {
} }
read_public_key() { read_public_key() {
printf '\nВ Windows-приложении нажмите «SSH-ключ» → «Копировать».\n' if [[ -n "${SERVER_MONITOR_PUBLIC_KEY:-}" ]]; then
read -rp 'Вставьте публичный ключ: ' PUBLIC_KEY PUBLIC_KEY="$SERVER_MONITOR_PUBLIC_KEY"
log "Публичный ключ получен из SERVER_MONITOR_PUBLIC_KEY"
else
printf '\nВ Windows-приложении нажмите «SSH-ключ» → «Копировать».\n'
if [[ -r /dev/tty ]]; then
IFS= read -r -p 'Вставьте публичный ключ: ' PUBLIC_KEY < /dev/tty
else
die "Нет интерактивного терминала. Передайте ключ через SERVER_MONITOR_PUBLIC_KEY"
fi
fi
PUBLIC_KEY="${PUBLIC_KEY//$'\r'/}" PUBLIC_KEY="${PUBLIC_KEY//$'\r'/}"
[[ "$PUBLIC_KEY" =~ ^ssh-ed25519[[:space:]]+[A-Za-z0-9+/]+={0,3}([[:space:]].*)?$ ]] \ [[ "$PUBLIC_KEY" =~ ^ssh-ed25519[[:space:]]+[A-Za-z0-9+/]+={0,3}([[:space:]].*)?$ ]] \
|| die "Ожидается публичный ключ формата ssh-ed25519 AAAA..." || die "Ожидается публичный ключ формата ssh-ed25519 AAAA..."
@ -138,7 +147,11 @@ install_server_part() {
uninstall_server_part() { uninstall_server_part() {
local answer local answer
read -rp 'Удалить пользователя мониторинга и forced-command? [y/N]: ' answer if [[ -r /dev/tty ]]; then
IFS= read -r -p 'Удалить пользователя мониторинга и forced-command? [y/N]: ' answer < /dev/tty
else
die "Для удаления требуется интерактивный терминал"
fi
[[ "$answer" =~ ^[Yy]$ ]] || { log "Отменено"; return 0; } [[ "$answer" =~ ^[Yy]$ ]] || { log "Отменено"; return 0; }
rm -f -- "$MONITOR_COMMAND" rm -f -- "$MONITOR_COMMAND"
if getent passwd "$MONITOR_USER" >/dev/null; then if getent passwd "$MONITOR_USER" >/dev/null; then