复制代码代码如下:
# cat /root/.muttrc
set envelope_from=yes
set from=owinux@sina.cn
set realname="Owinux"
set use_from=yes
set rfc2047_parameters=yes
set charset="utf-8"
2、发信脚本
复制代码代码如下:
# cat automail.sh
#!/bin/sh
# automail.sh
DIR=/root/owinux
mailcontent=$DIR/mailcontent
>"$mailcontent"
echo -e "owinux,您好!\n" >>$mailcontent
echo -e "\t附件为 `date +%Y-%m-%d` 设备日检报告,敬请查收。" >>$mailcontent
cat mailcontent | /usr/bin/mutt -s "设备日检报告" -a /root/owinux/report.xls owinux@126.com -c owinux@yeah.net -c owinux@sina.com
3、简要说明:
-s:指定主题
-a:附件
-c:抄送,需要抄送多人的话,须使用多个 -c 选项
使用上面的发信环境可以保证在页面查看邮件的时候,附件名不出现乱码。
其中 .muttrc 的 "set from"可以随便设置,可以是不存在的邮箱地址,当然正确的最好。
比如:
复制代码代码如下:
set from=abc@owinux.com
不过也并不是你设置的正确的邮箱地址就一定能发送成功。
复制代码代码如下:
set from=owinux@126.com
我新注册了一个 owinux@126.com,然后将 set from 设置为owinux@126.com,就没有成功。
原因在于126邮箱报了 550 MI:SPF 错误,连接到126 企业退信的常见问题? 发现
复制代码代码如下:
550 MI:SPF 发信IP未被发送域的SPF许可。
一、修改/etc/mail.rc //在最后面追加就行,也可以 echo >>set from=123456@qq.com //你自己的真实邮箱地址
set smtp=smtp.exmail.qq.com //在邮箱设置,客户端设置,设置方法,发送服务器里
set smtp-auth-user=123456@qq.com //自己邮箱真实地址
set smtp-auth-password=123456 //自己邮箱密码
set smtp-auth=login
:wq
二、到这里已经实现实现外部邮箱发送mail了,可以命令行输入
echo "Test Mail" | mail -s "Test" 123456@qq.com
########################################################################
也可以写脚本:
#!/bin/bash
user="
目标1 123456789@qq.com
目标2 123456789@163.com
……
"
userlist=`echo -e "${user}" | awk ‘{print $2}‘`
echo $userlist
mail -v -s "测试邮件" $userlist <test.txt
:wq
其中:
-v 显示详细信息
-s 邮件标题
test.txt 是你要输入邮件的内容
然后crontab -e 编辑计划任务,就可以实现定时发送邮件啦!
别发邮件了 直接发短信多好。。。我以前练习的时候写的,挺烂的但是能用
#!/bin/bash
#ping 2分钟结果存入文件
#var 1.0
#LX 2009年4月6日
#help function
help()
{
cat <<HELP
============= ping120s.sh help =============
ping目标地址,存入文件。 配合crontab用
USAGE:
-h 显示帮助
-to IP ping的IP地址
-sh 检查历史是否有丢包
-show 检查详细历史
-gz 压缩以前的记录,并删除txt文件
-of dir 指定输出文件的位置(要求绝对目录),也可以指定文件名(不建议)
HELP
}
#简略输出结果的函数
shmin()
{
for fName in PING__*.txt
do
var=$(sed -n '/.*packets.*/p' $fName | sed 's/.*received,//g' | sed 's/, time.*//g')
var="$(sed -n '/2009_.*/p' $fName) ==>$var"
echo "$var"
var=""
done
}
toGz()
{
gzName=ALL_$(date +%Y年%m月%d日%k时).tar.gz
gzName=`echo "$gzName" | sed 's/ /0/g'`
tar cvfz "$gzName" *.txt
[ ! -d old ] &&mkdir old
[ ! -d tmp ] &&mkdir tmp
mv $gzName old/ &&mv *.txt tmp/
}
############## main ###############
[ -z $1 ] &&{ echo "参数错误"helpexit 1}
#fileName=ping__$1__$(date +%m月%d日%k:%M)
#删除文件名中的空格, 不删除的话0点到10点之前都没法记录 日亚终于找到毛病了
#fileName=`echo "$fileName" | sed 's/ /0/g'`
#echo $fileName
TIMEOUT=30
while [ -n "$1" ]do
case "x$1" in
x-h) helpexit 0
x-to)
shift
[ -z "$1" ] &&{ echo "参数错误"helpexit 1}
pingTo="$1"
shift
x-sh) shminexit 0
x-show) cleartail -n 3 PING__*.txtexit 0
x-gz) toGzexit 0
x-of)
shift
[ -z "$1" ] &&{ echo "参数错误"helpexit 1}
ofilename="$1"
shift
*) echo "error"helpexit 1
esac
done
#-to是必须参数,ping到那里
[ -z "$pingTo" ] &&{ echo "-to 参数必选之参数"helpexit 1}
#判断存数文件的中间名
if [ -z "$ofilename" ] || [ -d "$ofilename" ]then
mfileName=$pingTo
else
mfileName=${ofilename##/*/}
fi
#生成存储文件的名称,如没有sed那句过了夜里12点0点开头到9点都无法存储,应为有个空格 日!
fileName=PING__"$mfileName"__$(date +%m月%d日%k:%M)
fileName=`echo "$fileName" | sed 's/ /0/g'`
#存储的目录判断,默认是$PWD,主要是判断绝对目录开头的/和结束的/
dirName="$PWD/"
if [ "x${ofilename%${ofilename#?}}" = "x/" ]then
if [ -d "$ofilename" ]then
dirName="$ofilename"
[ "x${ofilename#${ofilename%?}}" = "x/" ] || dirName="$dirName/"
elif [ -d "${ofilename%/*}" ]then
dirName="${ofilename%/*}/"
fi
fi
#echo $fileName
#echo $dirName
echo "$(date +%Y_%m_%d__%H:%M)" >"$dirName$fileName.txt"
ping "$pingTo" -n -w "$TIMEOUT" >>"$dirName$fileName.txt"
wait
bash sms.sh "$pingTo" 2>>sms.log
exit 0
下面是发短信脚本 sms.sh
lx@lx-Linux:~/bash/lx/ping$ cat sms.sh
#!/bin/bash
data=$(sh ping120s_V1.sh -sh| awk -F"[% ]" '{print $3}'|tac)
data=$(echo $data | awk '{print $1,$2}')
shijian=$(date +%Y年%m月%d日%k时%M分|sed 's/ *//g')
if [ -z $1 ]
then
address=""
else
address="$1"
fi
#echo $data
#echo $shijian
#data="40 $data"
for i in $(echo $data)
do
# echo "-->$i"
if [ $i -ge 40 ]
then
# echo "$i>=40"
sms -f 手机号码 -p 飞信密码 -t 发送给那个手机 -m "To:$address $i% loss -- $shijian" >>sms.log
wait
echo "To:$address $i% loss -- $shijian" >>sms.log
# bash ping120s_V1.sh -gz
exit 9
else
# echo "$i<40"
:
fi
done
exit 0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)