Поиск публичного ключа
This commit is contained in:
57
galias-d.sh
Normal file → Executable file
57
galias-d.sh
Normal file → Executable 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))
|
||||||
|
local count=${#FILES[@]}
|
||||||
|
|
||||||
if [[ -d "$SSH_DIR" ]]; then
|
if [ "$count" -eq 0 ]; then
|
||||||
# Ищем все .pub файлы в директории .ssh
|
# Не найден ключ
|
||||||
while IFS= read -r -d '' key_file; do
|
msgerr "Публичные SSH ключи не найдены. Будет совершена попытка создать в директории ${SSH_DIR}."
|
||||||
keys+=("$key_file")
|
local ALGORITHM="ed25519"
|
||||||
done < <(find "$SSH_DIR" -maxdepth 1 -name "*.pub" -type f -print0 2>/dev/null)
|
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
|
||||||
Reference in New Issue
Block a user