search system libraries and all venv's in /home for litellm installs and report versions found
🧩 Syntax:
#!/bin/bash
# Default values
PACKAGE_NAME="litellm"
#PACKAGE_NAME="pip" # use pip to test; every venv has pip
SEARCH_DIRS=("/home" "/opt" "/var/www")
# Parse command line flags
while getopts "p:d:h" opt; do
case $opt in
p) PACKAGE_NAME="$OPTARG" ;;
d) SEARCH_DIRS+=("$OPTARG") ;;
h)
echo "Usage: $0 [-p package_name] [-d additional_search_dir]"
echo "Example: $0 -p pip -d /usr/local"
exit 0
;;
\?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;;
esac
done
echo "Scanning for $PACKAGE_NAME installations..."
echo "Directories targeted for venv scan: ${SEARCH_DIRS[*]}"
echo "-----------------------------------"
# 1. Check system-wide Python environments
echo "Checking system-wide Python environments..."
for pip_cmd in pip pip3; do
if command -v "$pip_cmd" &> /dev/null; then
version=$("$pip_cmd" show "$PACKAGE_NAME" 2>/dev/null | grep "^Version:" | awk '{print $2}')
if [ -n "$version" ]; then
echo "[!] Found system-wide $PACKAGE_NAME version $version (via $pip_cmd)"
fi
fi
done
# 2. Search targeted directories for virtual environments
# Python package directories in site-packages often replace hyphens with underscores
PACKAGE_DIR_PREFIX=$(echo "$PACKAGE_NAME" | tr '-' '_')
for search_dir in "${SEARCH_DIRS[@]}"; do
if [ ! -d "$search_dir" ]; then
echo "Skipping $search_dir (Directory does not exist or is inaccessible)"
continue
fi
echo "Scanning $search_dir for isolated virtual environments..."
find "$search_dir" -type d \( -iname "${PACKAGE_NAME}-*.dist-info" -o -iname "${PACKAGE_DIR_PREFIX}-*.dist-info" \) 2>/dev/null | while read -r dist_info; do
metadata_file="$dist_info/METADATA"
if [ -f "$metadata_file" ]; then
# Extract the version number directly from the METADATA file
version=$(grep "^Version:" "$metadata_file" | awk '{print $2}')
# Extract the base directory of the venv for cleaner output
venv_dir=$(echo "$dist_info" | awk -F'/lib/python' '{print $1}')
# Fallback if the path structure is non-standard
if [ -z "$venv_dir" ] || [ "$venv_dir" = "$dist_info" ]; then
venv_dir=$(dirname "$dist_info")
fi
echo "[!] Found $PACKAGE_NAME version $version in: $venv_dir"
fi
done
done
echo "-----------------------------------"
echo "Scan complete."
if [ "$PACKAGE_NAME" = "litellm" ]; then
echo "Note: The known compromised versions of litellm are 1.82.7 and 1.82.8."
fi