导航:首页 > 操作系统 > linux发送邮件脚本

linux发送邮件脚本

发布时间:2023-07-04 23:34:27

linux下shell脚本PING命令只要延迟高于100ms就发送个邮件

#!/bin/bash
Timeout=0;
Timeout_limit=1;
Timeout_flag=0;
IP="8.8.8.8"

while [ 1 ]
do
# 取平均延迟的整数位
Timeout="`ping $IP -c 3 | grep 'min/avg/max/mdev'|awk '{print $4}'|cut -b ƍ'`"
if [ $Timeout -ge $Timeout_limit ] && [ $Timeout_flag -ne 1 ]; then
echo ping timeout, average delay=$Timeout ms
mail -s 'Ping Delay' 邮箱 < ar/log/boot.log
Timeout_flag=1
fi
if [ $Timeout -lt $Timeout_limit ] && [ $Timeout_flag -ne 0 ]; then
echo ping recovery, average delay=$Timeout ms
mail -s 'Ping recovery' 邮箱 < ar/log/boot.log
Timeout_flag=0
fi
sleep 5
done
第三行Timeout_limit值写错了,应该是100哈,代码提交了不能改了。你这个不需要把延迟结果保存在文件的,而是应该需要作定时检测的。

② linux 发邮件python脚本怎么检查是否发送成功

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
#导入smtplib和MIMEText 
import smtplib,sys 
from email.mime.text import MIMEText 
 
def send_mail(sub,content): 
    ############# 
    #要发给谁,这里发给1个人 
    mailto_list=["[email protected]"] 
    ##################### 
    #设置服务器,用户名、口令以及邮箱的后缀 
    mail_host="mail.gyyx.cn" 
    mail_user="[email protected]
    mail_pass="123456677890" 
    mail_postfix="gyyx.cn" 
    ###################### 
    ''''' 
    to_list:发给谁 
    sub:主题 
    content:内容 
    send_mail("[email protected]","sub","content") 
    ''' 
    me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
    msg = MIMEText(content,_charset='gbk') 
    msg['Subject'] = sub 
    msg['From'] = me 
    msg['To'] = ";".join(mailto_list) 
    try: 
        s = smtplib.SMTP() 
        s.connect(mail_host) 
        s.login(mail_user,mail_pass) 
        s.sendmail(me, mailto_list, msg.as_string()) 
        s.close() 
        return True 
    except Exception, e: 
        print

③ linux中群发不同邮件到不同的邮箱脚本怎么写

一、修改/etc/mail.rc //在最后面追加就行,也可以 echo >>
set [email protected] //你自己的真实邮箱地址
set smtp=smtp.exmail.qq.com //在邮箱设置,客户端设置,设置方法,发送服务器里
set [email protected] //自己邮箱真实地址
set smtp-auth-password=123456 //自己邮箱密码
set smtp-auth=login
:wq
二、到这里已经实现实现外部邮箱发送mail了,可以命令行输入
echo "Test Mail" | mail -s "Test" [email protected]
########################################################################
也可以写脚本:
#!/bin/bash
user="
目标1 [email protected]
目标2 [email protected]
……
"
userlist=`echo -e "${user}" | awk ‘{print $2}‘`
echo $userlist
mail -v -s "测试邮件" $userlist < test.txt
:wq
其中:
-v 显示详细信息
-s 邮件标题
test.txt 是你要输入邮件的内容
然后crontab -e 编辑计划任务,就可以实现定时发送邮件啦!

④ linux服务器上写个脚本,每隔xx分钟ping指定ip,如果不通,向指定邮箱发送邮件。

别发邮件了 直接发短信多好。。。
我以前练习的时候写的,挺烂的但是能用

#!/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 "参数错误"; help; exit 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) help; exit 0;;
x-to)
shift
[ -z "$1" ] && { echo "参数错误"; help; exit 1; }
pingTo="$1"
shift
;;
x-sh) shmin; exit 0;;
x-show) clear; tail -n 3 PING__*.txt; exit 0;;
x-gz) toGz; exit 0;;
x-of)
shift
[ -z "$1" ] && { echo "参数错误"; help; exit 1; }
ofilename="$1"
shift
;;
*) echo "error"; help; exit 1 ;;
esac
done

#-to是必须参数,ping到那里
[ -z "$pingTo" ] && { echo "-to 参数必选之参数"; help; exit 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

⑤ linux shell脚本每分钟执行计划任务,并把结果发送到mail,怎么不重复发送

如果是这样的话 建议你脚本设置一个阀值 用if判断实现 在统计fail的类型的错误的时候 通过uniq和sort之类的排序去重语法 将重复次数和数值计算出来写入邮箱的临时文档里 另外最好不要一分钟一次 感觉意义不大 如果非要一分钟一次的话 建议脚本改进 通过当前的date时间做减法 算时间和日志里的进行比对 然后找出近一分钟的时间内的fail的IP 写入tmp文件中 那样你可以用 >这样的输出重定向 以免每次看到都有很多重复信息。 具体的脚本写法我就不罗列了 自己解决问题才是成长的过程。

阅读全文

与linux发送邮件脚本相关的资料

热点内容
cmd命令ip 浏览:946
python输出单引号双引号 浏览:272
脚本编程管理命令 浏览:379
小爱音箱pro怎么自己装app 浏览:118
建立ftp文件夹命令 浏览:570
sha1withrsa算法 浏览:453
域名交易系统源码php 浏览:171
求解微分方程数值解的命令有哪些 浏览:626
程序员转时尚传媒 浏览:82
古拳谱pdf 浏览:42
一元二次方程无实数根的算法 浏览:352
程序员测试轻松吗 浏览:170
英雄联盟神魔怎么绑定服务器 浏览:982
音乐app怎么换音质 浏览:974
python进阶客户流失 浏览:280
华为荣耀10服务器地址 浏览:998
javastring相等判断 浏览:413
程序员考研究生学校 浏览:935
java卡顿 浏览:500
编程软件怎么运行zip文件 浏览:505