diff --git a/galias-d.sh b/galias-d.sh old mode 100644 new mode 100755 index 5c7abb7..3fd5390 --- a/galias-d.sh +++ b/galias-d.sh @@ -10,11 +10,12 @@ BLUE='\033[0;34m' NC='\033[0m' # No Color # Форматирование текста -function msgerr() # Вывод сообщения с ошибкой + +function msgerr() { echo -e "${RED}$1${NC}" } -function msgok() # Сообщение с успешным выполнением +function msgok() { echo -e "${GREEN}$1${NC}" } @@ -25,23 +26,53 @@ function msgpr() msgpr "hey! this is talias-d!" +# Распечатать найденный публичный ключ +pubkey_print() { + echo "=== Содержимое файла: $1 ===" + echo "" + cat "$1" + echo "" + echo "=== Конец файла ===" +} - - +# Установить пакет check_apt() { sudo apt install $1 -y } -## ИИ -find_public_keys() { - local keys=() - - if [[ -d "$SSH_DIR" ]]; then - # Ищем все .pub файлы в директории .ssh - while IFS= read -r -d '' key_file; do - keys+=("$key_file") - done < <(find "$SSH_DIR" -maxdepth 1 -name "*.pub" -type f -print0 2>/dev/null) +# Работа с публичными ключами +public_keys() { + local SSH_DIR=$HOME/.ssh + local FILES=($(find ${SSH_DIR} -type f -name "*.pub" 2>/dev/null)) + local count=${#FILES[@]} + + if [ "$count" -eq 0 ]; then + # Не найден ключ + msgerr "Публичные SSH ключи не найдены. Будет совершена попытка создать в директории ${SSH_DIR}." + local ALGORITHM="ed25519" + local filepath="${SSH_DIR}/id_${ALGORITHM}" + ssh-keygen -t $ALGORITHM -f ${filepath} -N "" > /dev/null + pubkey_print "${filepath}.pub" + elif [ "$count" -eq 1 ]; then + # Найден один ключ + msgok "Найден один публичный SSH ключ" + pubkey_print ${FILES[@]} + else + # Найдено больше одного + msgerr "Найдено $count публичных ключей. Какой показать:" + select file in "${FILES[@]}"; do + if [ -n "$file" ]; then + pubkey_print ${file} + break + else + echo "Неверный выбор. Попробуйте снова." + fi + done fi - - printf '%s\n' "${keys[@]}" -} \ No newline at end of file + + msgok "Ключ для копирования в gitea: https://g.torshes.ru/user/settings/keys" + msgpr "Нажмите любую клавишу для продолжения..." + read -n 1 -s # -n 1 - одна клавиша, -s - скрытый ввод +} + +public_keys \ No newline at end of file