Hi
Please refer below procedure to send email based on ping test in machine.
This procedure report full ping result to specified email address if ping test takes more than specified milliseconds time.
#Required inputs
# from == the sender's email address
# to == the recipient's email address
#Username- Set username if it is different from email address
#s_server= smtp server's host name( sender mail settings)
#s_port=smtp server's port number (sender mail settings)
#pingip - Ip to execute ping command;
sendfrom='XXXXXX@gmail.com'
username=sendfrom;
password='XXXXXX'
s_server='smtp.gmail.com'
s_port='465'
sendto='XXXX@gmail.com'
pingip='www.google.com'
threshold_in_ms=25;
#procedure function
import smtplib
from email.mime.text import MIMEText
import os;
import re;
import ctypes
import time;
class disable_file_system_redirection:
_disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
_revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
def __enter__(self):
self.old_value = ctypes.c_long()
self.success = self._disable(ctypes.byref(self.old_value))
def __exit__(self, type, value, traceback):
if self.success:
self._revert(self.old_value)
command='ping '+pingip+'>C:\pingstatus.txt' ;
with disable_file_system_redirection():
out=os.popen(command).read();
print (out);
average=os.popen('findstr "Average" C:\pingstatus.txt').read();
print(average);
a = re.findall('Average = [0-9]+ms', average)[0]
get = a.split()[-1][0:-2]
with open('C:\pingstatus.txt','r+') as fb:
msg = MIMEText(fb.read())
fb.close()
#fp = open('pingsta', 'r+')
msg['Subject'] = 'Ping status for'+pingip ;
msg['From'] = sendfrom
msg['To'] = sendto
if int(get) >= threshold_in_ms:
try:
s=smtplib.SMTP_SSL(s_server,s_port)
s.login(username,password)
s.sendmail(sendfrom,[sendto],msg.as_string())
s.quit()
print('Successfully sent email');
except Exception as e:
print(e)