linux使用telnet自动发送mail.
2015-06-09 14:14
591 查看
自己学习或者工作中,遇到的一些问题,第一次文字记录,希望对人对己,都是一种帮助。
[b]文章出发点: 需要在linux环境,做某些自动化测试工作,最终将测试结果,自动mail至同事们,这样省时方便,又有测试记录。[/b]
无奈自己才疏学浅,刚开始遇到这个问题,也不清楚改实现这个功能,只是知道应该有现成的工具mail,mailx等等,可以实现发送mail的功能;
但参考网上种种文章,说的都是乱七八糟的,怎么对这些工具进行配置也不知道,后搜到到可以使用telnet来完成邮件发送功能,
只需知道公司内服的smtp服务器地址及相应端口即可,简单方便,也无需配置,正好也符合自身的需求,故分享如下:
以上,只是基本完成功能,可以根据自己的需要来更改,此外上传ftp和sendmail时候,都将标准错误和标准输出,重定向至/dev/null;
毕竟我不想在我去拿机器的时候,看到满屏幕的动作。
[b]文章出发点: 需要在linux环境,做某些自动化测试工作,最终将测试结果,自动mail至同事们,这样省时方便,又有测试记录。[/b]
无奈自己才疏学浅,刚开始遇到这个问题,也不清楚改实现这个功能,只是知道应该有现成的工具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 2 shift done echo "DATA" echo "from:${_fromPerson}" echo "subject:${_subject}" for i in $list;do echo "to: $i" sleep 2 done 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 << EOF open $LOGFTP user ${LOG_USER} ${LOG_PASSWD} ascii prompt mkdir TestLog cd TestLog mkdir $DATE
cd $DATE lcd /home/testlog/$DATE put $logname close bye EOF //自动发送mail至A B C D sendMail A@xxx.com.cn B@xxx.com.cn C@xxx.com.cn D@xxx.com.cn echo "[done]"
以上,只是基本完成功能,可以根据自己的需要来更改,此外上传ftp和sendmail时候,都将标准错误和标准输出,重定向至/dev/null;
毕竟我不想在我去拿机器的时候,看到满屏幕的动作。
相关文章推荐
- 一个普通人
- CentOS系统的VPS安全设置与优化
- Linux rpm 命令参数使用详解
- linux stat 结构体
- linux命令符学习摘要,免得忘啦
- Linux常用命令大全3
- Linux常用命令大全2
- Linux常用命令大全1
- centos下 时间同步设置
- 韦老师linux_3.42内核没有配置网卡,已解决
- CentOS下系统时间同步和时区的修改和设置
- linux 时间同步的2种方法
- 一天小结
- Linux下如何实现两个IP机器的文件复制
- Linux内核中C编程生僻用法(GNU C)
- linux中配合IS-IS搭建DHCP服务让客户机自动获取IP地址
- linux文件创建、查看、编辑命令
- linux 结构体 初始化
- linux释放内存
- linux使用crontab实现PHP执行定时任务