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

View File

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