137 lines
4.3 KiB
Bash
Executable File
137 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Dynamic inventory script - lists all installed tools and services
|
|
# Can be run on any managed host
|
|
|
|
# Colors
|
|
BOLD='\033[1m'
|
|
GREEN='\033[32m'
|
|
YELLOW='\033[33m'
|
|
BLUE='\033[34m'
|
|
RED='\033[31m'
|
|
RESET='\033[0m'
|
|
|
|
echo -e "${BOLD}=== Installed Software Inventory ===${RESET}\n"
|
|
|
|
# Function to check if command exists
|
|
cmd_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
# Function to get version
|
|
get_version() {
|
|
if cmd_exists "$1"; then
|
|
case "$1" in
|
|
node) node --version 2>/dev/null ;;
|
|
python3) python3 --version 2>/dev/null | awk '{print $2}' ;;
|
|
git) git --version 2>/dev/null | awk '{print $3}' ;;
|
|
docker) docker --version 2>/dev/null | awk '{print $3}' | tr -d ',' ;;
|
|
conda) conda --version 2>/dev/null | awk '{print $2}' ;;
|
|
jupyter) jupyter --version 2>/dev/null | head -1 | awk '{print $3}' ;;
|
|
R) R --version 2>/dev/null | head -1 | awk '{print $3}' ;;
|
|
yq) yq --version 2>/dev/null | awk '{print $NF}' ;;
|
|
btop) btop --version 2>/dev/null | head -1 | awk '{print $3}' ;;
|
|
*) echo "unknown" ;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
# Development Tools
|
|
echo -e "${YELLOW}Development Tools:${RESET}"
|
|
for tool in git node python3; do
|
|
version=$(get_version $tool)
|
|
if [ -n "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s %s\n" "$tool" "not installed"
|
|
fi
|
|
done
|
|
|
|
# Data Science
|
|
echo -e "\n${YELLOW}Data Science Stack:${RESET}"
|
|
for tool in conda jupyter R; do
|
|
version=$(get_version $tool)
|
|
if [ -n "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s %s\n" "$tool" "not installed"
|
|
fi
|
|
done
|
|
|
|
# Check Jupyter service
|
|
if systemctl is-active --quiet jupyter-notebook 2>/dev/null; then
|
|
echo -e " ${GREEN}✓${RESET} Jupyter service running"
|
|
else
|
|
echo -e " ${RED}✗${RESET} Jupyter service not running"
|
|
fi
|
|
|
|
# Container Platform
|
|
echo -e "\n${YELLOW}Container Platform:${RESET}"
|
|
version=$(get_version docker)
|
|
if [ -n "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "docker" "$version"
|
|
if cmd_exists docker-compose; then
|
|
compose_version=$(docker-compose --version 2>/dev/null | awk '{print $NF}')
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "docker-compose" "$compose_version"
|
|
fi
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "docker"
|
|
fi
|
|
|
|
# Monitoring Tools
|
|
echo -e "\n${YELLOW}Monitoring Tools:${RESET}"
|
|
for tool in htop btop iotop nethogs; do
|
|
if cmd_exists $tool; then
|
|
version=$(get_version $tool)
|
|
if [ "$version" = "unknown" ] || [ -z "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "$tool"
|
|
else
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
fi
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$tool"
|
|
fi
|
|
done
|
|
|
|
# CLI Utilities
|
|
echo -e "\n${YELLOW}CLI Utilities:${RESET}"
|
|
for tool in jq yq ripgrep fd; do
|
|
if cmd_exists $tool; then
|
|
version=$(get_version $tool)
|
|
if [ "$version" = "unknown" ] || [ -z "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "$tool"
|
|
else
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
fi
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$tool"
|
|
fi
|
|
done
|
|
|
|
# Shell
|
|
echo -e "\n${YELLOW}Shell Environment:${RESET}"
|
|
current_shell=$(basename "$SHELL")
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "current shell" "$current_shell"
|
|
|
|
if [ -d "$HOME/.oh-my-zsh" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "oh-my-zsh"
|
|
fi
|
|
|
|
if [ -d "$HOME/.oh-my-zsh/custom/themes/powerlevel10k" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "powerlevel10k"
|
|
fi
|
|
|
|
# Services
|
|
echo -e "\n${YELLOW}System Services:${RESET}"
|
|
for service in docker tailscaled fail2ban sshd; do
|
|
if systemctl is-active --quiet $service 2>/dev/null; then
|
|
printf " ${GREEN}✓${RESET} %-15s running\n" "$service"
|
|
elif systemctl list-unit-files | grep -q "^$service"; then
|
|
printf " ${BLUE}○${RESET} %-15s installed (not running)\n" "$service"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$service"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
|