56 lines
1.9 KiB
Bash
56 lines
1.9 KiB
Bash
|
|
#!/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
|