LXC Inventory Script
I use the following script in the PVE shell to get a quick inventory of whats what in my containers.ย
Change the permissions to run it, I put it in the ~
directory:
chmod +x ~/what.sh
Here's the script:
#!/bin/bash
echo "๐งพ Proxmox LXC Container Deep Audit"
echo "===================================="
for CTID in $(pct list | awk 'NR>1 {print $1}'); do
echo -e "\n๐ฆ Container ID: $CTID"
echo "---------------------------"
OS_NAME=$(pct exec $CTID -- grep '^PRETTY_NAME=' /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"')
echo "๐งฌ OS: $OS_NAME"
IP_ADDR=$(pct exec $CTID -- hostname -I 2>/dev/null)
echo "๐ IP Address: $IP_ADDR"
echo -n "๐ Web Server: "
if pct exec $CTID -- which nginx > /dev/null 2>&1; then
NGINX_VER=$(pct exec $CTID -- nginx -v 2>&1 | cut -d/ -f2)
echo "Nginx $NGINX_VER"
elif pct exec $CTID -- which apache2 > /dev/null 2>&1; then
APACHE_VER=$(pct exec $CTID -- apache2 -v | grep "Server version" | awk '{print $3}' | cut -d/ -f2)
echo "Apache $APACHE_VER"
else
echo "Not installed"
fi
echo -n "๐ PHP: "
if pct exec $CTID -- which php > /dev/null 2>&1; then
PHP_VER=$(pct exec $CTID -- php -v | head -n 1 | awk '{print $2}')
echo "$PHP_VER"
else
echo "Not installed"
fi
echo -n "๐ฌ MariaDB/MySQL: "
if pct exec $CTID -- which mariadb > /dev/null 2>&1 || pct exec $CTID -- which mysql > /dev/null 2>&1; then
MARIA_VER=$(pct exec $CTID -- mariadb --version 2>/dev/null | awk '{print $5}')
MYSQL_VER=$(pct exec $CTID -- mysql --version 2>/dev/null | awk '{print $5}')
echo "${MARIA_VER:-$MYSQL_VER}"
else
echo "Not installed"
fi
echo -n "๐ PostgreSQL: "
if pct exec $CTID -- which psql > /dev/null 2>&1; then
POSTGRES_VER=$(pct exec $CTID -- psql --version | awk '{print $3}')
echo "$POSTGRES_VER"
else
echo "Not installed"
fi
echo -n "๐ฆ Redis: "
if pct exec $CTID -- which redis-server > /dev/null 2>&1; then
REDIS_VER=$(pct exec $CTID -- redis-server --version | awk '{print $3}' | cut -d= -f2)
echo "$REDIS_VER"
else
echo "Not installed"
fi
echo -n "๐ข Node.js: "
if pct exec $CTID -- which node > /dev/null 2>&1; then
NODE_VER=$(pct exec $CTID -- node -v)
echo "$NODE_VER"
else
echo "Not installed"
fi
echo -n "๐ Python: "
if pct exec $CTID -- which python3 > /dev/null 2>&1; then
PY3_VER=$(pct exec $CTID -- python3 --version 2>&1)
echo "$PY3_VER"
elif pct exec $CTID -- which python > /dev/null 2>&1; then
PY_VER=$(pct exec $CTID -- python --version 2>&1)
echo "$PY_VER"
else
echo "Not installed"
fi
echo -n "โ Java: "
if pct exec $CTID -- which java > /dev/null 2>&1; then
JAVA_VER=$(pct exec $CTID -- java -version 2>&1 | head -n 1 | awk -F '"' '{print $2}')
echo "$JAVA_VER"
else
echo "Not installed"
fi
echo -n "๐ Fail2ban: "
pct exec $CTID -- which fail2ban-server > /dev/null 2>&1 && echo "Installed" || echo "Not installed"
echo -n "๐ฅ UFW (Firewall): "
pct exec $CTID -- which ufw > /dev/null 2>&1 && echo "Installed" || echo "Not installed"
echo -n "๐ SSH Service: "
if pct exec $CTID -- systemctl is-active ssh >/dev/null 2>&1; then
echo "Running"
else
echo "Not running"
fi
echo -n "๐งฐ ZFS Tools: "
pct exec $CTID -- which zpool > /dev/null 2>&1 && echo "Installed" || echo "Not installed"
done
ย