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
|