有人会使用linux脚本发送邮件吗

有人会使用linux脚本发送邮件吗,第1张

1、编辑用户Home目录下的.muttrc文件,设置发信环境。

复制代码代码如下:

# 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/5934401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存