将send-email脚本添加到pingall bash脚本

时间:2016-10-31 11:07:04

标签: linux bash shell

我目前正在尝试制作一个简单的脚本/工具,以便ping和监控公司中所有IP摄像头的网络。所以我创建了iplist.txt并将所有ips添加到其中,每个都在一行上。该脚本将ping所有列表,然后打印" up"或" down"根据ping结果。

#!/bin/bash
# Program name: pingall.sh
date
cat /home/wade/iplist.txt |  while read output
do
    ping -c 1 "$output" > /dev/null
    if [ $? -eq 0 ]; then
    echo "node $output is up" 
    else
    echo "node $output is down"
    fi
done

我现在要做的是将包含输出的发送电子邮件脚本添加到电子邮件中。所有电子邮件端口(465,993,587,25 ......等)都已打开。那么如何添加可以将输出发送到gmail或非gmail(可能是dovecot)的电子邮件地址的sendmail或邮件脚本?

运行./pingall.sh > report.txt可能是附件或内容。在完成之后,我可能会把它添加到一个crond中。

1 个答案:

答案 0 :(得分:1)

所以我找到了答案,为了做到这一点,你首先需要安装ssmtp包:

在基于Debian的系统中:

apt-get install ssmtp 

在Arch Linux中

pacman -S ssmtp

之后,您需要在/etc/ssmtp/ssmtp.conf中编辑conf文件,并附上您的信息:(此处为gmail mail-server的信息示例)

vim /etc/ssmtp/ssmtp.conf


# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

对于Gmail帐户,您可能会收到错误消息,因此您需要将安全性设置为低。 (第一次尝试后,说明将被发送到您的收件箱)

现在,您需要为pingall创建一个永久别名。

首先,您需要编辑.bashrc文件

vim ~/.bashrc

在文件末尾添加别名:(取决于脚本的位置)

alias pingall='cd /home/wade && ./pingall.sh'

保存并退出并立即执行

. ~/.bashrc

最后,您需要通过cron.daily每天自动执行此操作

如果您使用的是Arch Linux,则需要先安装cronie,否则默认情况下应该安装。

pacman -S cronie

你需要进入/etc/cron.daily,然后创建一个cron作业文件“pingall”,添加以下脚本:

#!/bin/bash
pingall >> mail -s "sample subject" samplemail@test.com

您可以将vim替换为nano,vi,gedit等任何其他文本编辑器。

最后,您现在有一个自动脚本,每天ping所有ip摄像头,并在bash脚本结束时将输出通过电子邮件发送给收件人。

(您还可以添加多个收件人,只需添加逗号“,”然后添加下一封电子邮件。

我希望它有所帮助。