From d12a6fac1fd26b6fe441caf385ac38e2893482f7 Mon Sep 17 00:00:00 2001 From: pashko Date: Tue, 20 May 2025 11:50:59 +0800 Subject: [PATCH] Add bash_scripts/azure/check_nuget_sources.sh --- bash_scripts/azure/check_nuget_sources.sh | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 bash_scripts/azure/check_nuget_sources.sh diff --git a/bash_scripts/azure/check_nuget_sources.sh b/bash_scripts/azure/check_nuget_sources.sh new file mode 100644 index 0000000..ea3b2b7 --- /dev/null +++ b/bash_scripts/azure/check_nuget_sources.sh @@ -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