linux使用telnet自动发送mail.

来源:互联网 发布:成都市广电网络分公司 编辑:程序博客网 时间:2024/06/09 23:45

本文转载自http://blog.csdn.net/vilicwh/article/details/46426267


自己学习或者工作中,遇到的一些问题,第一次文字记录,希望对人对己,都是一种帮助。

文章出发点: 需要在linux环境,做某些自动化测试工作,最终将测试结果,自动mail至同事们,这样省时方便,又有测试记录。

无奈自己才疏学浅,刚开始遇到这个问题,也不清楚改实现这个功能,只是知道应该有现成的工具mail,mailx等等,可以实现发送mail的功能;

但参考网上种种文章,说的都是乱七八糟的,怎么对这些工具进行配置也不知道,后搜到到可以使用telnet来完成邮件发送功能,

只需知道公司内服的smtp服务器地址及相应端口即可,简单方便,也无需配置,正好也符合自身的需求,故分享如下:

#!/bin/bash##完成功能:# 1.自动测试将结果重定向至log,#2.将最终测试LOG上传至FTP保存,#3.自动mail通知人员,##定义LOG FTP的地址/账户/密码LOGFTP=`172.0.0.1`LOG_USER="test"LOG_PASSWD="test"autoTest(){    local s_DATE=`date +%Y-%m-%d`    local s_time=`date +%Y%m%d_%H%M%S`    logname="${s_time}_test.log"       自定义测试过程 > /home/testlog/${s_DATE}/$logname DATE=${s_DATE}}#当初验证公司内部,无需身份认证,如若需要,可参考网上,增加base64身份验证即可sendMail(){  #定义了邮件发送者姓名,mail主题,smtp服务器的地址和端口  _fromPerson="xxx@xxxx.com.cn"   _subject="Auto-Test-Result"  _smptServer=172.0.0.2  _smptPort=25    (echo "EHLO localhost"    sleep 2   echo "MAIL FROM: ${_fromPerson}"   sleep 2      #使用shift用法,mail发送多位人员   list=$@   until [ $# -eq  0 ];do   echo "RCPT TO: $1"sleep 2shift   done      echo "DATA"   echo "from:${_fromPerson}"   echo "subject:${_subject}"   for i in $list;doecho "to: $i"sleep 2done   echo ""   echo "Dear all,"   echo "The auto-test result as below:"   echo ""   cat $logname   echo ""   echo "ftp log path: ftp://TestLog/${LOGPATH}/$DATE/$logname"   echo ""   echo .   sleep 2   echo "QUIT") | telnet ${_smptServer} {_smptPort}     }echo "auto testing..."autoTest//自动上传测试结果至FTP,//按年月日自动建立ftp文件夹//按时分秒命名的LOG存放至相应文件夹(保证LOG唯一性 )ftp -n 2>1 1>& /dev/null << EOFopen $LOGFTPuser ${LOG_USER} ${LOG_PASSWD}asciipromptmkdir TestLogcd TestLogmkdir $DATE


以上,只是基本完成功能,可以根据自己的需要来更改,此外上传ftp和sendmail时候,都将标准错误和标准输出,重定向至/dev/null;

毕竟我不想在我去拿机器的时候,看到满屏幕的动作。