如果符合条件,发送电子邮件,然后睡一个小时

问题描述:

如果我在网络设备上的策略映射上看到数字增加,我有一个脚本向我发送电子邮件。如果符合条件,发送电子邮件,然后睡一个小时

这对我很好。但是现在我需要它在发现超时(没问题,可以每分钟运行一次cron作业)时发邮件给我 - 但是当它看到超时时,我需要脚本在一小时后不运行我不会被邮件淹没。因此,我希望脚本每隔一分钟左右检查一次网络设备,但每当它看到超出时,就停止运行。

想不到我的(初学者)头顶怎么去做这件事。

我的代码通过pexpect从网络设备中提取统计信息并将其转储到1.txt中。然后,我通过正则表达式去掉我需要的东西,然后与之前的运行进行比较。这不是优雅,我知道,但我是一个初学者...

我已经删除了一堆的代码,但这里的关键是它。 2.txt和3.txt包含数字 - 如果新数字更高,则会通过电子邮件发送给我。

getexceeds = open("1.txt", "r").readlines()[12] 
output = re.findall(r"\d+", getexceeds)[1] 
with open("2.txt", "w") as outp: 
    outp.write(output) 

newnumber = open("2.txt", "r").readlines()[0] 
oldnumber = open("3.txt", "r").readlines()[0] 

if oldnumber < newnumber: 
    send_email() 
else: 
    print "same" 

src_file = "2.txt" 
dst_file = "3.txt" 
shutil.copy(src_file, dst_file) 

感谢这里的任何帮助,我还是让我围绕脚本头和欣赏任何帮助!

+0

是否有可能以秒为单位获取时间(时间戳格式),然后简单计算出一小时内有3600秒,并且自上次发送电子邮件以来的时间结束后,再次发送? – 2014-09-22 15:17:56

可能的解决方案是使用时间库。它允许你做很多与时间不同的东西,如:

time.sleep(secs) 

在这方面的文章,可以发现here(当然,用几句话),但它在本质上只是暂停程序的给定数量秒。考虑到有3600秒,一小时只是做:

time.sleep(3600) 

注:此暂停60分钟的程序,这意味着你将无法在这段时间运行任何代码。

+1

谢谢你。我应该用我的头。所以我把脚本放在一个简单的while循环中,然后在发送电子邮件语句之后添加time.sleep语句......这很完美。谢了哥们。 – 2014-09-23 09:04:40

+0

@captainyossarian没问题!这个网站究竟是干什么的=) – 2014-09-23 12:19:25