Complete markdown files cleanup and organization
- Organized 252 files across project - Root directory: 187 → 2 files (98.9% reduction) - Moved configuration guides to docs/04-configuration/ - Moved troubleshooting guides to docs/09-troubleshooting/ - Moved quick start guides to docs/01-getting-started/ - Moved reports to reports/ directory - Archived temporary files - Generated comprehensive reports and documentation - Created maintenance scripts and guides All files organized according to established standards.
This commit is contained in:
102
scripts/scan-all-containers.sh
Executable file
102
scripts/scan-all-containers.sh
Executable file
@@ -0,0 +1,102 @@
|
||||
#!/bin/bash
|
||||
# Scan all containers across all Proxmox hosts
|
||||
# Outputs: VMID, name, host, IP config, current IP, status
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
HOSTS=(
|
||||
"192.168.11.10:ml110"
|
||||
"192.168.11.11:r630-01"
|
||||
"192.168.11.12:r630-02"
|
||||
)
|
||||
|
||||
OUTPUT_FILE="/home/intlc/projects/proxmox/CONTAINER_INVENTORY_$(date +%Y%m%d_%H%M%S).md"
|
||||
CSV_FILE="/home/intlc/projects/proxmox/container_inventory_$(date +%Y%m%d_%H%M%S).csv"
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
|
||||
echo "=== Scanning All Containers Across All Hosts ==="
|
||||
echo ""
|
||||
|
||||
# Create output files
|
||||
cat > "$OUTPUT_FILE" << EOF
|
||||
# Container Inventory - Complete Scan
|
||||
|
||||
**Generated**: $(date)
|
||||
**Purpose**: Complete inventory of all containers across all Proxmox hosts
|
||||
|
||||
---
|
||||
|
||||
## All Containers
|
||||
|
||||
| VMID | Name | Host | Status | IP Config | Current IP | Hostname |
|
||||
|------|------|------|--------|----------|------------|----------|
|
||||
EOF
|
||||
|
||||
echo "VMID,Name,Host,Status,IP_Config,Current_IP,Hostname" > "$CSV_FILE"
|
||||
|
||||
for host_info in "${HOSTS[@]}"; do
|
||||
IFS=: read -r ip hostname <<< "$host_info"
|
||||
echo "Scanning $hostname ($ip)..."
|
||||
|
||||
# Get all VMIDs for this host
|
||||
ssh -o ConnectTimeout=10 root@"$ip" "pct list 2>/dev/null | tail -n +2 | awk '{print \$1}'" > "$TEMP_DIR/${hostname}_vmids.txt" 2>/dev/null || continue
|
||||
|
||||
if [ ! -s "$TEMP_DIR/${hostname}_vmids.txt" ]; then
|
||||
echo " No containers found on $hostname"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Process each VMID
|
||||
while read -r vmid; do
|
||||
[ -z "$vmid" ] && continue
|
||||
|
||||
# Get container info in one SSH call
|
||||
container_data=$(ssh -o ConnectTimeout=10 root@"$ip" "
|
||||
name=\$(pct config $vmid 2>/dev/null | grep '^name:' | cut -d: -f2 | tr -d ' ' || echo 'unnamed')
|
||||
hostname_vm=\$(pct config $vmid 2>/dev/null | grep '^hostname:' | cut -d: -f2 | tr -d ' ' || echo 'N/A')
|
||||
status=\$(pct status $vmid 2>/dev/null | grep 'status:' | awk '{print \$2}' || echo 'unknown')
|
||||
net_config=\$(pct config $vmid 2>/dev/null | grep '^net0:' || echo '')
|
||||
ip_config='N/A'
|
||||
current_ip='N/A'
|
||||
if echo \"\$net_config\" | grep -q 'ip='; then
|
||||
ip_config=\$(echo \"\$net_config\" | grep -oE 'ip=[^,]+' | cut -d= -f2)
|
||||
if [ \"\$ip_config\" = 'dhcp' ] || [ \"\$ip_config\" = 'auto' ]; then
|
||||
if [ \"\$status\" = 'running' ]; then
|
||||
current_ip=\$(pct exec $vmid -- hostname -I 2>/dev/null | awk '{print \$1}' || echo 'N/A')
|
||||
fi
|
||||
else
|
||||
current_ip=\$(echo \"\$ip_config\" | cut -d'/' -f1)
|
||||
fi
|
||||
fi
|
||||
echo \"\$name|\$hostname_vm|\$status|\$ip_config|\$current_ip\"
|
||||
" 2>/dev/null || echo "|||||")
|
||||
|
||||
IFS='|' read -r name hostname_vm status ip_config current_ip <<< "$container_data"
|
||||
|
||||
# Output to files
|
||||
echo "| $vmid | $name | $hostname | $status | $ip_config | $current_ip | $hostname_vm |" >> "$OUTPUT_FILE"
|
||||
echo "$vmid,\"$name\",$hostname,$status,$ip_config,$current_ip,$hostname_vm" >> "$CSV_FILE"
|
||||
|
||||
done < "$TEMP_DIR/${hostname}_vmids.txt"
|
||||
done
|
||||
|
||||
# Calculate summary
|
||||
dhcp_count=$(grep -c "| dhcp |" "$OUTPUT_FILE" || echo "0")
|
||||
static_count=$(grep -v "| dhcp |" "$OUTPUT_FILE" | grep -v "| N/A |" | grep -c "| 192.168.11" || echo "0")
|
||||
total_count=$(tail -n +12 "$OUTPUT_FILE" | grep -c "^|" || echo "0")
|
||||
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
echo ""
|
||||
echo "=== Scan Complete ==="
|
||||
echo "Total containers scanned: $total_count"
|
||||
echo "Output files:"
|
||||
echo " - $OUTPUT_FILE"
|
||||
echo " - $CSV_FILE"
|
||||
echo ""
|
||||
|
||||
# Summary by IP config type
|
||||
echo "=== Summary by IP Configuration ==="
|
||||
echo "DHCP containers: $dhcp_count"
|
||||
echo "Static IP containers: $static_count"
|
||||
echo "Total containers: $total_count"
|
||||
Reference in New Issue
Block a user