#!/usr/bin/env python3
from proxmoxer import ProxmoxAPI
import time
from datetime import datetime, timedelta
pve = ProxmoxAPI(
"proxmox",
user="monitoring@pve",
token_name="pbs" ,
token_value="<redacted>",
verify_ssl=False
)
vmids = {}
for pve_node in pve.nodes.get():
for container in pve.nodes(pve_node['node']).lxc.get():
vmids[container['vmid']]=container['name']
for vm in pve.nodes(pve_node["node"]).qemu.get():
vmids[vm['vmid']]=vm['name']
pbs = ProxmoxAPI(
"pbs",
service="PBS",
user="monitoring@pbs",
token_name="pbs" ,
token_value="<redacted>",
verify_ssl=False
)
# datastore name on PBS
datastore = "datastore"
for vm in vmids:
backup = pbs(f"admin/datastore/{datastore}/snapshots/?backup-id={vm}").get()
backups = len(backup)
if backups == 0:
print(f"{vm} no backup present")
else:
sorted_list = sorted(backup, key=lambda x: x["backup-time"])
ts = sorted_list[-1]["backup-time"]
ago = datetime.now() - datetime.fromtimestamp(ts)
if ago < timedelta(hours=24):
print(f"{vm} was backed up less than 24h ago ({ago})")
else:
print(f"{vm} needs a new backup - {ago}")