47 lines
1.5 KiB
Bash
Executable File
47 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Quick container list script
|
|
# Simple list of all containers on Proxmox host
|
|
|
|
set +e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/load-env.sh"
|
|
load_env_file
|
|
|
|
PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.10}"
|
|
PROXMOX_PORT="${PROXMOX_PORT:-8006}"
|
|
|
|
# Get first node
|
|
NODES_RESPONSE=$(curl -k -s -m 10 \
|
|
-H "Authorization: PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}" \
|
|
"https://${PROXMOX_HOST}:${PROXMOX_PORT}/api2/json/nodes" 2>&1)
|
|
|
|
FIRST_NODE=$(echo "$NODES_RESPONSE" | python3 -c "import sys, json; print(json.load(sys.stdin)['data'][0]['node'])" 2>/dev/null)
|
|
|
|
# Get containers
|
|
CONTAINERS_RESPONSE=$(curl -k -s -m 10 \
|
|
-H "Authorization: PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}" \
|
|
"https://${PROXMOX_HOST}:${PROXMOX_PORT}/api2/json/nodes/${FIRST_NODE}/lxc" 2>&1)
|
|
|
|
echo "Containers on ${FIRST_NODE}:"
|
|
echo ""
|
|
|
|
echo "$CONTAINERS_RESPONSE" | python3 -c "
|
|
import sys, json
|
|
try:
|
|
data = json.load(sys.stdin)['data']
|
|
if len(data) == 0:
|
|
print('No containers found')
|
|
else:
|
|
print(f'{'VMID':<6} {'Name':<30} {'Status':<10}')
|
|
print('-' * 50)
|
|
for container in sorted(data, key=lambda x: x['vmid']):
|
|
vmid = container['vmid']
|
|
name = container.get('name', 'N/A')
|
|
status = container.get('status', 'unknown')
|
|
print(f'{vmid:<6} {name:<30} {status:<10}')
|
|
except:
|
|
print('Failed to parse container data')
|
|
" 2>/dev/null
|
|
|