import time import subprocess import StringIO import re from wol import * import os import signal import smtplib from email.MIMEText import MIMEText def sendTextMail(strFrom, to, strSubject, text ): #from = "SimpaCluster " mail = MIMEText(text) mail['From'] = strFrom mail['Subject'] = strSubject mail['To'] = to smtp = smtplib.SMTP('smtp.univ-rennes1.fr', 25) #smtp.connect() #smtp.login('guillaume.raffy@univ-rennes1.fr', 'password') smtp.sendmail(strFrom, [to], mail.as_string()) smtp.close() class Error( Exception ): def __init__( self, strMessage ): self.m_strMessage = strMessage def getHostName(): (returnCode, stdout, stderr) = executeProgram(['hostname', '-s']) if returnCode != 0: raise Error(stderr) strHostName = re.sub(r"\n", "", stdout) return strHostName def log( message ): print time.asctime(time.localtime())+' : '+ message def executeProgram( astrArguments ): #log('executeProgram : program [%s]' % (','.join(astrArguments))) popen = subprocess.Popen( astrArguments, bufsize=1, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) # bufsize=1 seems to prevent deadlocks that happen 50% the time stdout, stderr = popen.communicate() #popen.wait() result = (popen.returncode, stdout, stderr) #log('executeProgram : command %s popen.pid = %d' % (astrArguments[0], popen.pid)) #os.kill(popen.pid, signal.SIGTERM) return result def executeCommand( command ): """ executes the shell command such as 'set x=1; myprog $x' """ popen = subprocess.Popen( [ command ], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, executable = '/bin/bash' ) # bufsize=1 seems to prevent deadlocks that happen 50% the time # if we don't specify the optional executable argument, then the default non interactive shell will be used. On debian, the default non-interactive shell is dash, which doesn't understand the keyword 'source' that we use in many places stdout, stderr = popen.communicate() #popen.wait() result = (popen.returncode, stdout, stderr) return result def getUpsStatus(): try: url = 'http://Net Vision:public@129.20.27.119/PageMonComprehensive.html' f = urllib.urlopen(url) res = f.read() f.close() except: print "bad read" return h = MyHTMLParser() h.feed(res) tokensList = h.GetTokenList() if __name__ == '__main__': """ for i in range(30): machineName = 'simpatix%d' % (i+10) print 'lom ip of %s is %s' % (machineName, getLightOutManagementIpAddress(machineName)) """ wakeUp('simpatix21') #print putToSleep('simpatix13') #print isNonRespondingMachineSleeping('simpatix13')