海运的博客

Linux/Centos下mail连接到smtp服务器发送邮件

发布时间:April 15, 2012 // 分类:Mail // No Comments

自架邮件服务器麻烦还容易被拦截,可以使用Linuxmail命令连接到第三方邮件服务器商的smtp服务器发送邮件。

#/bin/bash
mailaddr=onovps@www.haiyun.me
smtpserver=smtp.www.haiyun.me
user=onovps
passwd=onovps
cat >> /etc/mail.rc <<EOF
set from=$mailaddr
set smtp=$smtpserver
set smtp-auth=login
set smtp-auth-user=$user
set smtp-auth-password=$passwd
EOF

发送邮件:

mail -v -s "主题" onovps@www.haiyun.me #Enter键后输入正文
mail -v -s "主题" onovps@www.haiyun.me < file #file内容为正文
echo "正文"|mail -v -s "主题" onovps@www.haiyun.me #以重定向输入为正文

用Shell脚本监控服务器并发邮件报警

发布时间:April 15, 2012 // 分类:系统监控,Shell // No Comments

对于服务器来说在线率很重要,出现问题要能及时解决,但系统管理员不能一直守在电脑旁边,通过脚本监控网站出现问题及时通过mail通知管理员,如果是139邮箱还可免费手机短信通知。
通过系统直接发送mail容易被拦截,可使用mail连接第三方smtp发送邮件

#!/bin/bash
#Created by https://www.haiyun.me
#set -x
while true
do
    list=(www.haiyun.me cp.www.haiyun.me)
    mail=onovps@www.haiyun.me
    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
    i=0
    id=${#list[*]}
    while [ $i -lt $id ] 
    do
        if ping -c1 ${list[$i]} >/dev/null
        then
            echo  $date:服务器${list[$i]}能ping通。
        else
            if curl -m 10  ${list[$i]} > /dev/null 
            then
                echo  $date:服务器${list[$i]} ping不通,能打开网页。
            else
                echo  "您好,据系统监测服务器${list[$i]}不能访问且ping不通,请及时处理!故障发生时间:$date"|mail -s "服务器${list[$i]}不能连接! 故障发生时间:$date" $mail
                until 
                    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
                    ping -c1 ${list[$i]} >/dev/null && echo "恭喜!服务器${list[$i]}已恢复正常,恢复时间:$date"|mail -s "服务器${list[$i]}已恢复正常! 恢复时间:$date" $mail
                do
                    sleep 5
                done
            fi
        fi
        let i++
    done
    sleep 60
done

执行:

nohup sh /path/file.sh & #放到后台运行,程序60秒检查一次网站。

开机运行:

echo "nohup sh /path/file.sh & " >> /etc/rc.local

监控Nginx遇到502 Bad Gateway自动重启lnmp

发布时间:April 15, 2012 // 分类:Nginx,Shell // 1 Comment

此脚本用Curl监控Nginx网站状态,如回应502信息即重启LNMP

#!/bin/bash
website=https://www.haiyun.me #修改为您的网址
if curl -I $website|grep "HTTP/1.1 502"; then
  /root/lnmp restart
fi

添加到crontab计划任务:

crontab -e
*/5 * * * * sh /path/lnmp-502.sh #5分钟执行一次

Nginx/Lnmp错误502 Bad Gateway解决方法

发布时间:April 15, 2012 // 分类:Nginx // No Comments

由于Nginx处理php反代到后端php-cgi处理,如未收到回应会输出502 Bad Gateway,可优化配置防止出现此类情况。
也可以新建脚本监控lnmp出现502 Bad Gateway自动重启lnmp
1.调整nginx与php-cgi通信方式,默认为unix-sock,更改为较稳定的TCP方式。

#https://www.haiyun.me
sed -i 's/\/tmp\/php-cgi.sock/127.0.0.1:9000/' /usr/local/php/etc/php-fpm.conf 
#设置TCP监听127.0.0.1:9000
sed -i 's/unix:\/tmp\/php-cgi.sock/127.0.0.1:9000/' /usr/local/nginx/conf/nginx.conf
sed -i 's/unix:\/tmp\/php-cgi.sock/127.0.0.1:9000/' /usr/local/nginx/conf/vhost/*
#设置nginx反代

2.修改php-cgi进程数量,每个php-cgi进程占用15M左右内存,由于lnmp为小内存优化,默认开启5个php-cgi进程,可根据自己情况适量增加,不要让系统因为内存不足而当掉。

sed -i 's/max_children">.</max_children">8</'  /usr/local/php/etc/php-fpm.conf
#调整为8个
/root/lnmp restart #t重启lnmp

3.修改超时时间,lnmp已优化设置。

用iptables自动封IP,防SSH被暴力破解

发布时间:April 14, 2012 // 分类:Shell,网络安全 // No Comments

此脚本用于分析统计secure日记文件,对ssh登录错误次数较多的IP用iptables封掉。

#!/bin/bash
#Created by https://www.haiyun.me
num=10 #上限
for i in `awk '/Failed/{print $(NF-3)}' /var/log/secure|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
do
       iptables -I INPUT -p tcp -s $i --dport 22 -j DROP
done

加入crontab计划任务

crontab -e
* */5 * * * sh /path/file.sh #5小时执行一次
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...