如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件

Posted 集成电路设计及EDA教程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件相关的知识,希望对你有一定的参考价值。

如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件

看到这个标题是否感觉很奇怪,Perl 发送邮件这个功能有什么用呢?邮件用手工编写不是更方便么?为啥用Perl写那么麻烦的脚本来实现这个功能?多半是脑子有坑。

刚开始刷Perl教程的时候,我一眼就把Perl的这个功能给略过了,觉得没啥卵用。

过了一段时间之后,看到公司的服务器自动发送的邮件,想到了一种特别实用的功能。

 

众所周知,在数字IC设计中,很多过程都是非常耗时的,比如逻辑综合、PRDRCLVS,短则几个小时,长则好几天。为了不delay整个项目,我们可能每隔一段时间需要打开服务器看一下软件是否跑完了,跑的进度如何。

结果等了好久之后一看结果发现遇到了Surprise,唉呀妈呀脑瓜疼,脑瓜疼

如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件

莫慌,需要赶快Feedback,或者Debug

如果人不在电脑旁的话,只能等有空再去看了,此时对于项目进度的了解处于九霄云外的状态。

重点:在项目即将Tapeout的时候IC攻城狮基本都是要加班熬夜的,这个时候,难道要一直守候在电脑旁边么?研究生阶段的我都是这样的,由于要拼版图,将多个芯片拼在一起,整体加Dummy,做DRCLVS等等,非常耗时,Tapeout前夕基本是没办法睡个好觉的。

如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件

为了中途偷个懒眯会儿眼,我也会这样做,人为凭经验预估每个过程大概需要跑多长时间,然后过段时间之后去服务器看一下跑的怎么样了。


其实我们非常需要这样一种功能:当软件执行完毕之后,马上通知Designer我已经跑完了,快来看看我的结果吧如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件。可是软件好像都没有这种功能。当看到Perl可以用 sendmail工具发邮件的时候,我想到了可以用它来写个脚本实现我们想要的这种通知功能。


下面上干货-Perl脚本


#!/usr/bin/perl


 # 接收邮箱

$to ='hqiao@nvidia.com';

#发送邮箱

$from ='hqiao@nvidia.com';

#标题

$subject= 'Shift_max reports OK';

 

my$shift_max_dir       = '/xxx/clock_transition';

 

my$shift_max_dir_list        = `ls $shift_max_dir`;

chomp($shift_max_dir_list);

 

while($shift_max_dir_list !~ /trunk_reports/){

print "wait ";

#等待程序执行结果吐出trunk_reports等文件夹,如果没有执行完毕则没有这个文件夹,程序将一直等待,每隔60秒查找一次

sleep(60);

$shift_max_dir_list        = `ls$shift_max_dir`;

}

 

#邮件中发送的信息内容,我们将该程序跑完之后目录下的内容以列表的形式发送到邮件中

@message= `ls -lrt $shift_max_dir`;

 

open(MAIL,"|/usr/sbin/sendmail -t");

 

# 打印邮件头部

printMAIL "To: $to ";

printMAIL "From: $from ";

printMAIL "Subject: $subject ";

# 打印邮件信息

printMAIL @message;

 

close(MAIL);

print" Shift_max reports send mail succesfully "; 



执行该程序,如果没有检查到某些报告(比如DRC没有做完,没有吐出最终的报告),输出结果为:

wait

wait

wait

wait

如果某个程序执行完毕了(比如DRC做完了),则会报告:

Shift_maxreports send mail succesfully


好了安心执行程序,之后定一个邮箱提醒,可以合眼睡觉了,收到消息可以看宝宝(服务器)发来的消息了,哈哈哈

如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件


如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件公告如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件

链接:https://study.163.com/course/introduction/1005909004.htm

网易云课堂

《Calibredrv教程-提高流程自动化》

如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件

《搭建IC设计的EDA虚拟机/服务器》

如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件


以上是关于如何通过Perl脚本随时随地得知项目进展状态--Perl 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

在我的脚本中理解指向哈希的 Perl 指针

如何使用 Python 将标准输入/标准输出通过管道传输到 Perl 脚本

在 Perl 中从 STDIN 捕获退出状态

nginx如何让URL不区分大小写

在 Android 上运行 Perl 脚本

Perl 如何将数组作为参数传递给另一个 Perl 脚本