当前位置:首页 » 编程软件 » linux脚本发邮件

linux脚本发邮件

发布时间: 2022-05-23 01:15:30

A. linux中自动发送邮件脚本编写

请问各位linux高玩,我想显示并判断abc这个文件目录中文件,当这个目录中的文件个数超过4个以后就发送一个email到指定的地址,如果4个以下则不发送,请问这个脚本应该怎样写呢?我一般用的mutt来发送邮件的。。 谢谢

B. 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

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

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

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

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

复制代码代码如下:

# cat /root/.muttrc
set envelope_from=yes
set [email protected]
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 [email protected] -c [email protected] -c [email protected]

3、简要说明:

-s:指定主题
-a:附件
-c:抄送,需要抄送多人的话,须使用多个 -c 选项

使用上面的发信环境可以保证在页面查看邮件的时候,附件名不出现乱码。
其中 .muttrc 的 "set from"可以随便设置,可以是不存在的邮箱地址,当然正确的最好。
比如:

复制代码代码如下:

set [email protected]

不过也并不是你设置的正确的邮箱地址就一定能发送成功。

复制代码代码如下:

set [email protected]

我新注册了一个 [email protected],然后将 set from 设置为[email protected],就没有成功。
原因在于126邮箱报了 550 MI:SPF 错误,连接到126 企业退信的常见问题? 发现

复制代码代码如下:

550 MI:SPF 发信IP未被发送域的SPF许可。

E. Linux crontab定时脚本 调用mail命令发送邮件

你把shell的内容和crontab的内容复制出来看一下。

F. 要用shell脚本实现发邮件的需求,要发给多人,前台会把所有的邮件地址传给我,我怎么给所有地址发出去

如果你要向外部发邮件,通常需要配置你的sendmail或者使用更加强大的Postfix建立邮件服务器,然后用邮件客户端向外发送邮件。
而shell只是一个执行脚本,通过这个脚本可以实现自动发送的目的,但是解决不了你发邮件的需求。
如果有多个人,可以使用循环来写。如果你对linux不懂的话,最好尽量少使用脚本。喜欢DU啪啦君,就采纳一下吧!

G. linux下使用perl脚本通过139邮箱发送邮件之后,手机无法登录139邮箱

修改密码就是了,perl脚本也要修改一下,模拟浏览器登录。

H. 如何使用linux shell发送Email邮件

方法很多呀,mail命令就可以实现,这个命令在很多包里都有,例如sendmail

I. 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

J. 求一个linux脚本:看磁盘使用情况,超过85%的自动报警发入到指定邮箱,并做成计划任务

#!/bin/sh
ip=192.168.1.1; #你的真实IP地址
time=`date +%F-%H:%M`;
mail_address="你的邮件地址";
tmpfile=/tmp/check-disk.txt
a=`df -h | grep 'sda1'|awk '{print int($5)}'`; #指定过滤的硬盘分区
touch /tmp/check-disk.txt
echo "From :$ip" > $tmpfile #这里用“>”的意思是覆盖,保证每次发邮件的内容都是新的。
echo "DateTime:$time" >> $tmpfile
echo "Info :yourname" >> $tmpfile
echo "disk_status_use=$a%" >> $tmpfile
if [[ "$a" > 85 ]]; then #指定分区的磁盘使用空间大于85%就报警
/bin/mail -s "warning ! $HOSTNAME disk is full !" $mail_address < $tmpfile
else
/bin/mail -s "$HOSTNAME disk is ok !" $mail_address < $tmpfile
fi

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:968
python中的init方法 发布:2025-10-20 08:17:33 浏览:676
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:828
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:737
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1076
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:308
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:188
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:829