你是否有过这样的经历:程序不知道什么时候运算完,因此你不得不频繁的查看运行状态。或者不知道程序会在什么时候出现错误,因此溜号的时候总是提心吊胆。
这篇文章就是用来帮助你解决这个问题的。前提是你是中国移动用户,并且那个让你牵肠挂肚的的电脑可以上网。
在我的工作中,CFD(包括很多科学运算)程序需要运行很长的时间,完成时间难以确定。因此如果可以在计算完成后进行短信提醒则会起到很大的帮助。
通过google搜索,我发现可以采用 程序->脚本->电子邮件->短信 这样的流程来完成这一功能。
1.电子邮件->短信
这一步可以采用139的信箱来完成。如果你是移动的用户就可以免费注册一个139信箱(mail.139.com)。这个信箱在收到邮件后会给注册的手机发送提醒短信,内容包括发件人和邮件标题。注册后邮箱名为 "手机号码@139.com" 例如 1391302****@139.com。
2.命令(脚本)->电子邮件
对我来说这一步是最麻烦的(对于有些可以直接用命令行发送邮件的电脑来说这一步就极其简单了),我参考了网上的文章,用Gmail账户发送邮件。
主要参考http://www.61dh.com/blog/2009/01/ubuntu.html
1. 安装所需的软件
$ sudo apt-get install msmtp
$ sudo apt-get install nail
2. 安装Gamil的Thawte证书
$ mkdir -p ~/etc/.certs
$ chmod 0700 ~/etc/.certs
$ cd ~/etc/.certs
$ wget https://www.verisign.com/support/thawte-roots.zip --no-check-certificate
$ unzip thawte-roots.zip
$ cp Thawte\ Server\ Roots/ThawtePremiumServerCA_b64.txt ThawtePremiumServerCA.crt
3. 配置msmtp,我是用Vim打开的,原文使用gedit
$ gedit ~/.msmtprc
或者:
$ vim ~/.msmtprc
这将打开一个空白文档,你只需把下面大写部分改为你的个人设置后粘帖即可。因为我只想使用gmail account,所以我没有设置isp account,并且把account default改为gmail。 别忘了改“USER”!!!
# config options: http://msmtp.sourceforge.net/doc/msmtp.html#A-user-configuration-file
defaults
logfile /tmp/msmtp.log
# isp account
account isp
auth login
host SMTP.YOURISP.COM
port 25
user
[email protected]
from
[email protected]
password *****
# gmail account
account gmail
auth on
host smtp.gmail.com
port 587
user
[email protected]
password *****
from
[email protected]
tls on
tls_trust_file /home/USER/etc/.certs/ThawtePremiumServerCA.crt
# set default account to use (from above)
account default : isp
# 注意:我把默认改为 gmail
4. 更改msmtprc文件的许可
$ chmod 600 ~/.msmtprc
5. 配置nail,我是用Vim打开的,原文使用gedit
$ gedit ~/.mailrc
或者
$ vim ~/.mailrc
这将打开一个空白文档,你只需把下面大写部分改为你的个人设置后粘帖即可。因为我只想使用gmail account,所以我没有设置isp account。
# set smtp for nail
# ref: http://ubuntuforums.org/showpost.php...94&postcount=6
# docs: http://msmtp.sourceforge.net/doc/msm...guration-files
# isp account (default)
# $ nail -s "subject line" -a /path/file
[email protected] < /path/body.txt
set from="
[email protected]"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a isp"
# gmail account
# $ nail -A gmail -s "subject line" -a /path/file
[email protected] < /path/body.txt
account gmail {
set from="
[email protected] (YOURNAME)"
set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"
}
搞定!!!
发送测试:
$ echo -e "testing email from the command line" > /tmp/test_email
$ nail -A gmail -s "gmail test"
[email protected] < /tmp/test_email
完成了这个设置后建立两个文件第一个是~/etc/null 这个文件里面是所发邮件的内容。我把它设置为空内容。
第二个文件是执行脚本/usr/local/bin/sms内容如下。请将其中的USER换为对应的用户名,1391302****@139.com改用你自己的邮箱。
#!/bin/bash
nail -A gmail -s
"$1"
1391302****@
139.com < /home/USER/etc/null
完成后,请执行如下命令进行测试。如果一切顺利你可以收到一条提示你接收邮件的短信。
3.程序->命令
在所执行的程序中调用系统函数。这里给出对应的fortran代码。
program test
call system
(
'sms 我是一个Fortran程序'
)
end
program test
其他语言也可以采用同样的方法完成这个工作。这就是我的解决办法,希望对大家有用。
如果你觉得你有更好地方案,请留言告诉我。
转载自:http://cfd.is-programmer.com/posts/7164.html