#!/bin/bash
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
check_curl_installed() {
if command -v curl &> /dev/null; then
return 0
else
return 1
fi
}
install_curl() {
echo -e "${YELLOW}Installing curl...${NC}"
if [ -x "$(command -v apt-get)" ]; then
sudo apt-get update -y
sudo apt-get install -y curl
elif [ -x "$(command -v dnf)" ]; then
sudo dnf install -y curl
elif [ -x "$(command -v yum)" ]; then
sudo yum install -y curl
elif [ -x "$(command -v zypper)" ]; then
sudo zypper install -y curl
elif [ -x "$(command -v pacman)" ]; then
sudo pacman -S --noconfirm curl
else
echo -e "${RED}Error: Unknown package manager, cannot install curl automatically${NC}"
exit 1
fi
}
verify_curl() {
echo -e "${YELLOW}Verifying curl installation...${NC}"
if check_curl_installed; then
CURL_VERSION=$(curl --version | head -n1)
echo -e "${GREEN}✅ curl installed. Version: ${CURL_VERSION}${NC}"
echo -e "${YELLOW}Testing curl (simple HTTP request)...${NC}"
if curl -s -o /dev/null -w "%{http_code}" https://www.baidu.com | grep -q "200"; then
echo -e "${GREEN}✅ curl test passed${NC}"
else
echo -e "${YELLOW}⚠ curl installed but test failed (check network)${NC}"
fi
else
echo -e "${RED}❌ curl installation failed. Check manually.${NC}"
exit 1
fi
}
echo -e "${YELLOW}=== Checking curl installation ===${NC}"
if check_curl_installed; then
CURL_VERSION=$(curl --version | head -n1)
echo -e "${GREEN}curl is installed. Version: ${CURL_VERSION}${NC}"
verify_curl
else
echo -e "${RED}curl not installed${NC}"
if ! sudo -v &> /dev/null; then
echo -e "${RED}Error: sudo required to install. Run as a user with sudo.${NC}"
exit 1
fi
install_curl
verify_curl
fi
echo -e "${GREEN}=== Done ===${NC}"
exit 0