#!/bin/sh ## # Wilfredo Sanchez # # Configure a new backup client on the server. ## . "$(dirname "$0")/common.sh"; for client in "$@"; do # # Set up SSH keys for the client # private_key_file="$(ssh_client_private_key_file "${client}")"; public_key_file="$(ssh_client_public_key_file "${client}")"; if [ ! -f "${private_key_file}" ] || [ ! -f "${public_key_file}" ]; then echo "Generating SSH keys for ${client}..."; ssh-keygen -q \ -C "${client}" \ -N "" \ -f "$(ssh_client_key_basename "${client}")" \ ; fi; public_key="$(cat "${public_key_file}")"; if egrep " ${client}\$" "${authorized_keys_file}" > /dev/null; then if ! fgrep "${public_key}" "${authorized_keys_file}" > /dev/null; then error "ERROR: Client ${client} is authorized with different keys."; # FIXME: Delete the offending keys? exit 1; fi; else echo "Authorizing public key for ${client}..."; new_key_file="$(mktemp -t bab)"; cat "${authorized_keys_file}" > "${new_key_file}"; printf 'from="%s",command="%s" %s\n' \ "${client}" \ "${backup_server_command}" \ "${public_key}" \ >> "${new_key_file}"; sudo install -m 644 "${new_key_file}" "${authorized_keys_file}"; rm "${new_key_file}"; fi; #echo "${client} private key:"; #cat "${private_key_file}"; #echo ""; # # Set up backup root for the client # client_backup_root="$(client_backup_root "${client}")"; if [ ! -d "${client_backup_root}" ]; then echo "Creating backup home for ${client}..."; sudo install -d -o "${backup_user}" -m 750 "${client_backup_root}"; fi; done;