Files
pve-api/curl-pve.sh

89 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
set -efu
. ./.env
sleep_time=1
# Get ticket and csrf token
pve_response="$(curl -s -v -k -d "username=$PROXMOX_USER_FULL" --data-urlencode "password=$PROXMOX_PASSWORD" https://pve.office.basealt.ru:8006/api2/json/access/ticket)"
sleep "$sleep_time"
# Send stop signal to vm 510
r="$(curl -s -v -k -X POST \
-b "PVEAuthCookie=$(jq -r .data.ticket <<<"$pve_response")" \
-H "CSRFPreventionToken: $(jq -r .data.CSRFPreventionToken <<<"$pve_response")" \
https://pve.office.basealt.ru:8006/api2/json/nodes/pve01/qemu/510/status/stop)"
sleep "$sleep_time"
# Print response to stdout
jq <<<"$r"
# Save task id for future polling
upid0="$(jq -r .data <<<"$r")"
# Send stop signal to vm 511
r="$(curl -s -v -k -X POST \
-b "PVEAuthCookie=$(jq -r .data.ticket <<<"$pve_response")" \
-H "CSRFPreventionToken: $(jq -r .data.CSRFPreventionToken <<<"$pve_response")" \
https://pve.office.basealt.ru:8006/api2/json/nodes/pve01/qemu/511/status/stop)"
sleep "$sleep_time"
# Print response to stdout
jq <<<"$r"
# Save task id for future polling
upid1="$(jq -r .data <<<"$r")"
# Send stop signal to vm 512
r="$(curl -s -v -k -X POST \
-b "PVEAuthCookie=$(jq -r .data.ticket <<<"$pve_response")" \
-H "CSRFPreventionToken: $(jq -r .data.CSRFPreventionToken <<<"$pve_response")" \
https://pve.office.basealt.ru:8006/api2/json/nodes/pve01/qemu/512/status/stop)"
sleep "$sleep_time"
# Print response to stdout
jq <<<"$r"
# Save task id for future polling
upid2="$(jq -r .data <<<"$r")"
# Wait for vm 510 to stop
status=
while [ ! "$status" = 'stopped' ]; do
sleep "$sleep_time"
r="$(curl -s -v -k \
-b "PVEAuthCookie=$(jq -r .data.ticket <<<"$pve_response")" \
"https://pve.office.basealt.ru:8006/api2/json/nodes/pve01/tasks/$upid0/status")"
# Print response to stdout
jq <<<"$r"
status="$(jq -r .data.status <<<"$r")"
done
# Wait for vm 511 to stop
status=
while [ ! "$status" = 'stopped' ]; do
sleep "$sleep_time"
r="$(curl -s -v -k \
-b "PVEAuthCookie=$(jq -r .data.ticket <<<"$pve_response")" \
"https://pve.office.basealt.ru:8006/api2/json/nodes/pve01/tasks/$upid1/status")"
# Print response to stdout
jq <<<"$r"
status="$(jq -r .data.status <<<"$r")"
done
# Wait for vm 512 to stop
status=
while [ ! "$status" = 'stopped' ]; do
sleep "$sleep_time"
r="$(curl -s -v -k \
-b "PVEAuthCookie=$(jq -r .data.ticket <<<"$pve_response")" \
"https://pve.office.basealt.ru:8006/api2/json/nodes/pve01/tasks/$upid2/status")"
# Print response to stdout
jq <<<"$r"
status="$(jq -r .data.status <<<"$r")"
done