#!/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