29 lines
764 B
Bash
Executable file
29 lines
764 B
Bash
Executable file
#!/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")"
|
|
|
|
if [[ -z "$pid" || -z "$api_sock" ]]; then
|
|
continue
|
|
fi
|
|
|
|
if ps -p "$pid" -o comm=,args= 2>/dev/null | rg -q "firecracker.*--api-sock $api_sock"; then
|
|
printf 'id=%s name=%s created_at=%s guest_ip=%s pid=%s tap=%s\n' \
|
|
"$id" "$name" "$created_at" "$guest_ip" "$pid" "$tap"
|
|
fi
|
|
done
|