shell腳本編程學習筆記(三)編寫郵件報警腳本


一、shell編寫郵件報警腳本

    1、POSTFIX郵件服務器准備

        a、首先卸載服務器上自帶的sendmail

            rpm -qa sendmail*    //查看安裝的sendmail

            rpm -e sendmail-8.*****    //卸載

        b、安裝postfix(發郵件用的,25號端口)和dovecot(收郵件用的,110號端口)

            yum install postfix* dovecot* -y

            rpm -qa | grep postfix*

            rpm -qa | grep devecot*

        c、配置發郵件postfix

            vim /etc/postfix/main.cf

            1)修改myhostname

               #myhostname = virtual.domain.tld

               myhostname = mail.g.cn

            2)修改mydomain

               #mydomain=domain.tld

               mydomain=g.cn

            3)修改myorigin

               myorigin=$myhostname

               myorigin=$mydomain

            4)修改smtp監聽端口

               inet_interfaces=all

               #inet_interfaces=$myhostname

               #inet_interfaces=$myhostname,localhost

               #inet_interfaces=localhost

            5)修改mydestination

               mydestination=$myhostname,$mydomain

               #mydestination=$myhostname,localhost.$mydomain,localhost,$mydomain

               #mydestination=$myhostname,localhost.$mydomain,localhost,$mydomain,mail.$mydomain,www.$mydomain,ftp.$mydomain

            6)修改本地網段

               mynetworks=192.168.31.60/24,127.0.0.0/8

               #mynetworks=$config_directory/mynetworks

               #mynetworks=hash:/etc/postfix/network_table

            7)修改relay_domain轉發郵件域名

               relay_domain=$mydestination

            8)修改postfix aliasex郵件別名

               #alias_maps=dbm:/etc/aliases

               alias_maps=hash:/etc/aliases

               #alias_maps=netinfo:/aliases

 

               #alias_database=dbm:/etc/aliases

               #alias_database=dbm:/etc/maik/aliases

               alias_database=hash:/etc/aliases

               #alias_database=hash:/etc/aliases, hash:/opt/majordomo/aliases

              :wq

            9)啟動postfix打開25號端口

               service postfix restart

               netstat -anp |grep :25

               pstree |grep master        //啟動后進程叫master

            10)測試是否能發送郵件

               echo  hello | mail root@g.cn

               報錯:-bash: mail: command not found

               安裝:yum install -y mailx

               查看郵件:mail

               刪除郵件:d

               退出:q

               telnet發送郵件

                  telnet 192.168.31.60  25

                  mail form:發件人

                  rcpt to:收件人

                  data

                  郵件內容

                  quit

        e、配置收郵件dovecot

            vim /etc/dovecot/dovecot.conf

            1)修改protocole支持pop3和pop3s

              protocols=imap imaps pop3 pop3s

            2)修改pop3和imaps在所在ipv4接口上監聽110與143端口

              imap_listen = *

              pop3_listen = *

            n)開啟dovecot

              service dovecot start

              netstat -tunpl |grep :110

              netstat -tunpl |grep :143

    2、編寫web服務器監控

        nc命令:

            Linux中nc命令是一個功能強大的網絡工具,全稱是netcat。

             語法:

                nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通信端口...]

            參數說明:

                -g<網關> 設置路由器躍程通信網關,最丟哦可設置8個。

                -G<指向器數目> 設置來源路由指向器,其數值為4的倍數。

                -h 在線幫助。

                -i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。

                -l 使用監聽模式,管控傳入的資料。

                -n 直接使用IP地址,而不通過域名服務器。

                -o<輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。

                -p<通信端口> 設置本地主機使用的通信端口。

                -r 亂數指定本地與遠端主機的通信端口。

                -s<來源位址> 設置本地主機送出數據包的IP地址。

                -u 使用UDP傳輸協議。

                -v 顯示指令執行過程。

                -w<超時秒數> 設置等待連線的時間。

                -z 使用0輸入/輸出模式,只在掃描通信端口時使用。

        touch web.sh

            #!/bin/bash

            #web.sh

            nc -w 3 localhost 80 &>/dev/null

            if [ $? -eq 0 ];then

              str="apache web服務器目前狀態處於正常狀態!!!"

            else

              str="apache web服務器目前處於關閉或無響應狀態!!!"

            fi

            echo $str|mail -s 'apache web server' admin@g.cn

    3、編寫mysql數據庫監控

        touch mysql.sh 

            #!/bin/bash

            #mysql.sh

            nc -e 3 localhost 3306 &>/dev/null

            if [ $? -eq 0 ];then

                    str="mysql server status Running!!!"

            else

                    str="mysql server status Shuting!!!"

            fi

            echo $str | mail -s 'mysql server' admin@g.cn

    4、編寫Disk硬盤空間監控

        touch disk.sh

            #!/bin/bash

            #disk.sh

            ds=`df |awk '{if(NR==7){print int($5)}}'`    //視情況而定

            if [ $ds -lt 45 ];then

                   str="disk space is less than 45%!!!"

            else

                   str="disk space is greater than 45%!!!"

            fi

            echo $str | mail -s 'linux server disk space' admin@g.cn

    5、編寫mem(內存)空間監控腳本

        touch mem.sh

            #!/bin/bash

            #mem.sh

            mem=`free -m |awk '{if(NR==2){printf("%.0f\n",(int($3)/int($2))*100)}}'`        //四舍五入取整

            if [ $mem -lt 45 ];then            //表達式內為整數表達式,不能用浮點型

                   str="mem space is less than 45%,Achieve $mem%!!!"

            else

                   str="mem space is greater than 45%,Achieve $mem%!!!"   

            fi

            echo $str | mail -s 'linux server mem space' admin@g.cn

    6、報警腳本重啟生效

          1)設置腳本權限

            chmod 755 /etc/init.d/mon.sh    //mon.sh:將所有腳本放到這個腳本中,或者調用其他腳本,發送一封郵件即可

          2)crontab -e                //任務計划

            */5****bash /etc/init.d/mon.sh

            如:10 13 *** /mnt/monitor.dh      //每天的13:10執行這個代碼

          3)tail -f /var/log/cron

          4)郵件報警要提前測試准備郵件系統是否正常工作

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM