#!/usr/bin/env bash set -euo pipefail shopt -s nullglob get_prop() { local info="$1" local key="$2" awk -F= -v k="$key" '$1==k {print $2}' "$info" } for info in state/vms/*/info; do id="$(get_prop "$info" "id")" name="$(get_prop "$info" "name")" created_at="$(get_prop "$info" "created_at")" guest_ip="$(get_prop "$info" "guest_ip")" pid="$(get_prop "$info" "pid")" tap="$(get_prop "$info" "tap")" api_sock="$(get_prop "$info" "api_sock")" status="stale" if [[ -n "$pid" && -n "$api_sock" ]]; then if ps -p "$pid" -o comm=,args= 2>/dev/null | rg -q "firecracker.*--api-sock $api_sock"; then status="running" fi fi printf 'status=%s id=%s name=%s created_at=%s guest_ip=%s pid=%s tap=%s\n' \ "$status" "$id" "$name" "$created_at" "$guest_ip" "$pid" "$tap" done