devops/bash_scripts/azure/check_nuget_sources.sh

56 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Файл NuGet.Config — путь по умолчанию для пользователя
CONFIG_FILE="${HOME}/.nuget/NuGet/NuGet.Config"
# Проверка существования файла
if [ ! -f "$CONFIG_FILE" ]; then
echo "NuGet.Config не найден по пути: $CONFIG_FILE"
exit 1
fi
echo "Чтение NuGet источников из $CONFIG_FILE..."
echo
# Извлечь источники с помощью xmllint
SOURCES=$(xmllint --xpath "//packageSources/add/@value" "$CONFIG_FILE" 2>/dev/null | sed -E 's/value="([^"]*)"/\1\n/g' | grep -E '^http')
if [ -z "$SOURCES" ]; then
echo "Не найдено ни одного источника в NuGet.Config."
exit 1
fi
# Запрос PAT у пользователя (если используется Azure DevOps)
read -p "Введите Azure DevOps Personal Access Token (или оставьте пустым для анонимного доступа): " PAT
# Проверка каждого URL
echo "Проверка источников..."
echo
for URL in $SOURCES; do
echo "Источник: $URL"
if [[ "$URL" == *"dev.azure.com"* ]]; then
if [ -n "$PAT" ]; then
# Azure DevOps требует auth: user:PAT
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" -u user:$PAT "$URL")
else
echo "Источник требует авторизации, но PAT не указан."
continue
fi
else
# Обычный анонимный источник
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
fi
case $HTTP_STATUS in
200) echo "Доступен (HTTP 200)";;
401) echo "Требуется авторизация (HTTP 401)";;
403) echo "Доступ запрещён (HTTP 403)";;
404) echo "Не найден (HTTP 404)";;
*) echo "Статус: $HTTP_STATUS";;
esac
echo
done