Listing 1. Temperature Monitoring with Python Scripting ---- monitor_temp.py ---- SHUTOFF_TEMP = 50.0 mail_list = ['fake.email@fakedomain.com'] import os, re, smtplib def send_mail(toaddrs, msg): fromaddr = 'sysadmin@fakedomain.com' server = smtplib.SMTP('smtp.uq.edu.au') server.sendmail(fromaddr, toaddrs, msg) server.quit() f = os.popen('hostname', "r") hostname = f.readline().split()[0] svc_proc = hostname[:4] + 'sp' + hostname[4:] f.close() f = os.popen("ipmitool -I lan -P password -H %s sensor | grep 'cpu[0-1].memtemp'" % svc_proc, "r") mail_sent = False for line in f.readlines(): if mail_sent: break tokens = line.split() str = tokens[2] if str == 'NA': temp = 1.0 else: temp = float(str) if temp >= SHUTOFF_TEMP: msg = 'Re: hot temperature initiated shutdown for %s\n' % hostname msg += 'The CPU memtemp for %s exceeded %.1f.\n' % (hostname, SHUTOFF_TEMP) msg += 'This node has been shutdown.\n' for address in mail_list: send_mail(address, msg) # Clean up scratch and power down os.system('rm -rf /scratch/*') os.system('/sbin/shutdown now -h') mail_sent = True