Поиск публичного ключа

This commit is contained in:
2026-02-20 22:00:17 +05:00
parent 858ec5b785
commit 39e019197b

63
galias-d.sh Normal file → Executable file
View File

@@ -10,11 +10,12 @@ BLUE='\033[0;34m'
NC='\033[0m' # No Color NC='\033[0m' # No Color
# Форматирование текста # Форматирование текста
function msgerr() # Вывод сообщения с ошибкой
function msgerr()
{ {
echo -e "${RED}$1${NC}" echo -e "${RED}$1${NC}"
} }
function msgok() # Сообщение с успешным выполнением function msgok()
{ {
echo -e "${GREEN}$1${NC}" echo -e "${GREEN}$1${NC}"
} }
@@ -25,23 +26,53 @@ function msgpr()
msgpr "hey! this is talias-d!" msgpr "hey! this is talias-d!"
# Распечатать найденный публичный ключ
pubkey_print() {
echo "=== Содержимое файла: $1 ==="
echo ""
cat "$1"
echo ""
echo "=== Конец файла ==="
}
# Установить пакет
check_apt() { check_apt() {
sudo apt install $1 -y sudo apt install $1 -y
} }
## ИИ # Работа с публичными ключами
find_public_keys() { public_keys() {
local keys=() local SSH_DIR=$HOME/.ssh
local FILES=($(find ${SSH_DIR} -type f -name "*.pub" 2>/dev/null))
if [[ -d "$SSH_DIR" ]]; then local count=${#FILES[@]}
# Ищем все .pub файлы в директории .ssh
while IFS= read -r -d '' key_file; do if [ "$count" -eq 0 ]; then
keys+=("$key_file") # Не найден ключ
done < <(find "$SSH_DIR" -maxdepth 1 -name "*.pub" -type f -print0 2>/dev/null) 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 fi
printf '%s\n' "${keys[@]}" msgok "Ключ для копирования в gitea: https://g.torshes.ru/user/settings/keys"
} msgpr "Нажмите любую клавишу для продолжения..."
read -n 1 -s # -n 1 - одна клавиша, -s - скрытый ввод
}
public_keys