Add bash_scripts/azure/check_nuget_sources.sh

This commit is contained in:
pashko 2025-05-20 11:50:59 +08:00
parent aa48982027
commit d12a6fac1f

View File

@ -0,0 +1,55 @@
#!/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