免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3256 | 回复: 14
打印 上一主题 下一主题

关于Mail送信的头疼问题,求大神! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-02 15:41 |只看该作者 |倒序浏览
最近在做一个监控脚本,每分钟监控CPU是否达到100%,如果连续若干分钟达到100%就发送邮件。在网上找了下面这段代码用来发信:

  1. maildir=/tmp/
  2. mailTo=
  3. mailFrom =
  4. mailMsgFile=msgFile.txt
  5. mailSubject=test
  6. inputfile=$maildir/in
  7. outputfile=$maildir/out
  8. rm -rf $inputfile
  9. rm -rf $outputfile
  10. mknod $inputfile p
  11. touch $outputfile
  12. exec 7<> $outputfile
  13. exec 8<> $inputfile

  14. send_mail(){
  15. telnet $esmtp 25 <&8 >&7 &
  16. tail -f $outputfile &

  17. sleep 3
  18. echo 'HELO' >> $inputfile
  19. sleep 1
  20. #echo "AUTH LOGIN" >>  $inputfile
  21. #sleep 1
  22. #echo "$user" >>  $inputfile
  23. #sleep 1
  24. #echo "$pass" >>  $inputfile
  25. #sleep 1
  26. echo "MAIL FROM:$mailFrom" >>  $inputfile
  27. sleep 2
  28. echo "RCPT TO:$mailTo1" >> $inputfile
  29. sleep 1
  30. echo "RCPT TO:$mailTo2" >> $inputfile
  31. sleep 1
  32. echo "RCPT TO:$mailTo3" >> $inputfile
  33. sleep 1
  34. echo "RCPT TO:$mailTo4" >> $inputfile
  35. sleep 2
  36. echo "DATA" >> $inputfile
  37. sleep 2
  38. echo "From:$mailFrom">> $inputfile
  39. echo "To:$mailToShow">> $inputfile
  40. echo "Cc:$mailCCShow">> $inputfile
  41. echo "Subject:$mailSubject" >> $inputfile
  42. echo
  43. sleep 2
  44. cat $mailMsgFile >> $inputfile
  45. echo
  46. sleep 3

  47. echo '.' >> $inputfile
  48. sleep 2
  49. echo "quit" >> $inputfile
  50. }

  51. send_mail
复制代码
,通过测试每分钟发送一封邮件,到了下午2点停止。
但是Shell停止后,进程中还留有很多tail -f /tmp/out进程
请问有前辈知道这是为什么吗?这句话是用来做什么的,怎样能让它发送完一次邮件后就中止这个进程。

论坛徽章:
0
2 [报告]
发表于 2012-03-02 15:51 |只看该作者
....脚本里用tail -f 是什么目的?

论坛徽章:
0
3 [报告]
发表于 2012-03-02 16:07 |只看该作者
回复 2# mpstat


    说实话,不太清楚,这是以前一个好用的脚本我就拿过来了。请问您知道是什么意思吗?或者您那里有没有好用的发邮件的脚本。

论坛徽章:
0
4 [报告]
发表于 2012-03-02 17:06 |只看该作者
各位,有发邮件的脚本吗?

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
5 [报告]
发表于 2012-03-02 17:32 |只看该作者
mail命令不能用吗?
cpu使用率, 还不如解析/proc/loadavg 或者top的输出.

论坛徽章:
0
6 [报告]
发表于 2012-03-02 17:53 |只看该作者
回复 5# 惟吾无为


mail命令不是得提前配置好了吗?好像用这种方法不需要提前配置,使用Telnet的方式远程邮件服务器,用自己的帐户发送邮件。
请问您用过吗?

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
7 [报告]
发表于 2012-03-02 22:12 |只看该作者
回复 6# iceberg9527


    没有. 只试过mail向本地账户发送邮件. 使用redhat6.1, 没要求什么配置.
还有, 我只是个学生, 别期望太高^_^.

评分

参与人数 1可用积分 +4 收起 理由
expert1 + 4 很给力!

查看全部评分

论坛徽章:
0
8 [报告]
发表于 2012-03-03 14:01 |只看该作者
迫不得已,再次顶起。
请帮助啊。各位。

论坛徽章:
0
9 [报告]
发表于 2012-03-03 14:28 |只看该作者
回复 6# iceberg9527


    那你知道什么命令可以杀tail -f吗?
我用killalll -HUP tail命令会把正常的tail进程杀掉。我只想杀tail  -f 命令。
有什么好办法吗?

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
10 [报告]
发表于 2012-03-03 16:04 |只看该作者
本帖最后由 winway1988 于 2012-03-03 16:07 编辑

回复 9# iceberg9527


    这个脚本就是模拟了整个smtp协议的交互过程,telnet的输入从管道文件inputfile输入,标准输出输出到outputfile,并用tail实时显示
  1.        -f, --follow[={name|descriptor}]
  2.               output appended data as the file grows;
复制代码
tail -f $outputfile &
只是为了显示服务器端的响应信息,去掉也不影响发邮件功能,可以在send_mail执行完加一句
  1. kill -15 $!
复制代码
  1. $!        运行在后台的最后一个作业的进程ID(PID)
复制代码
另外如果没记错的话,用户名和密码都是经过base64编码后的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP