您的位置:首页 > 运维架构 > Linux

linux使用telnet自动发送mail.

2015-06-09 14:14 591 查看
自己学习或者工作中,遇到的一些问题,第一次文字记录,希望对人对己,都是一种帮助。

[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;

毕竟我不想在我去拿机器的时候,看到满屏幕的动作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: