small changes

This commit is contained in:
crate 2024-10-09 20:21:46 +00:00
parent 9feade143d
commit 9b514dd962
2 changed files with 15 additions and 25 deletions

View File

@ -29,7 +29,9 @@ def setup_logging():
logger.addHandler(handler)
return logger
def monitor_ups(logger):
logger = setup_logging()
def monitor_ups():
client = PyNUTClient()
try:
ups_status = client.list_vars('ups')
@ -41,7 +43,7 @@ def monitor_ups(logger):
logger.error(f"Error communicating with NUT: {e}")
return None
def send_email(subject, body, recipient_email, gmail_user, gmail_password, logger):
def send_email(subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = gmail_user
@ -56,11 +58,10 @@ def send_email(subject, body, recipient_email, gmail_user, gmail_password, logge
logger.info(f"Failed to send email: {e}")
def main():
logger = setup_logging()
logger.info("Starting UPS monitoring service.")
prev_status = None
while True:
ups_data = monitor_ups(logger)
ups_data = monitor_ups()
if ups_data:
status = ups_data['status']
battery = ups_data['battery_charge']
@ -69,38 +70,27 @@ def main():
logger.warning(f"Outage detected! Power On Battery. {battery}% charge remaining.")
send_email(
f"{ups_id}: Power Outage Detected",
f"The {ups_id} UPS is running on battery power! {battery}% charge remaining.",
recipient_email,
gmail_user,
gmail_password,
logger
)
f"The {ups_id} UPS is running on battery power! {battery}% charge remaining.")
elif status == "OL":
logger.info(f"Power On Line. {battery}% charge remaining.")
send_email(
f"{ups_id}: Power On Line",
f"{ups_id} UPS power has been restored! {battery}% charge remaining.",
recipient_email,
gmail_user,
gmail_password,
logger
)
f"{ups_id} UPS power has been restored! {battery}% charge remaining.")
else:
logger.info(f"UPS status changed to: {status}")
prev_status = status
if status == "OB DISCHRG" and battery < 50:
elif status == "OB DISCHRG" and battery < 50:
logger.warning(f"Battery level low: {battery}% charge remaining.")
send_email(
f"{ups_id} battery low.",
f"{ups_id} battery level low: {battery}% charge remaining.",
recipient_email,
gmail_user,
gmail_password,
logger
)
f"{ups_id} battery level low: {battery}% charge remaining.")
elif status == "OB DISCHRG" and battery < 35:
logger.warning(f"Battery level critical: {battery}% charge remaining.")
send_email(
f"{ups_id} battery critical!!",
f"{ups_id} battery level critial: {battery}% charge remaining.")
time.sleep(30)
time.sleep(5)
if __name__ == "__main__":
main()

View File

@ -23,4 +23,4 @@ for node in all_nodes:
node_status = proxmox.nodes(name).status.get()
print(f"Node {name} Status: {node_status}")
# shutdown_pve()
shutdown_pve()