Thứ Tư, 8 tháng 10, 2014

Auto switch Gateway on Centos

I have Centos server, how to auto check status connect Internet any times ? , if it lost connect to ISP 1 then it auto connect to ISP 2 and reverse.
I created script to auto check  and switch ISP for this problem:

     


root@wgproxy [~] # mkdir /root/ChangeGW

root@wgproxy [~] # cd /root/ChangeGW/

root@wgproxy [~/ChangeGW] # vi checkGW.py
#!/usr/bin/python
import os, smtplib
from threading import Thread

def sendmail(subject):
        "Sends an email to the specified recipent "
        username = '
xxxxx@gmail.com'
        password = 'abcdefgh'

        server = smtplib.SMTP('smtp.gmail.com:25')
        server.starttls()
        server.login(username, password)

        fromAddr ='xxxxx@gmail.com'
        toAddr2 = 'yyyyyy@gmail.com'
        header = 'To: ' + toAddr2 + '\n' + 'From: ' + fromAddr  + '\n' + 'Subject: ' + subject + '\n'
  
        msg = header + '\nCheck it now!\n'

    server.sendmail(fromAddr, toAddr2, msg)
        server.close()
def FPT():
        ip = '/root/ChangeGW/ISP'
    ret = os.system('ping -c 4 118.70.127.130 &> /dev/null')
        fr = open(ip,"r")
        str = fr.read(3)
        fr.close()
    if ret != 0 and str == "FPT":
                message = 'ADSL FPT has been DOWN and switch to ADSL VT'
                os.system('/root/ChangeGW/GWVT')
        fo1 = open(ip,"w")
                fo1.write("VTL")
                fo1.close()
                sendmail(message)
                print message

def VT():
        ip = '/root/ChangeGW/ISP'
    ret = os.system('ping -c 4 118.70.127.130 &> /dev/null')
        fr = open(ip,"r")
        str = fr.read(3)
        fr.close()
    if ret == 0 and str == "VTL":
                message = 'ADSL FPT has been Up and Restored ADSL VT to ADSL FPT'
                os.system('/root/ChangeGW/GWFPT')
        fo1 = open(ip,"w")
                fo1.write("FPT")
                fo1.close()
                sendmail(message)
                print message
def checkGW():     
    FPT()
    VT()
t = Thread(target=checkGW)
t.start()



root@wgproxy [~/ChangeGW] # vi GWFPT

#!/bin/bash
echo NETWORKING=yes > /etc/sysconfig/network
echo HOSTNAME=wgproxy >> /etc/sysconfig/network
echo GATEWAY=192.168.1.2 >> /etc/sysconfig/network
echo NOZEROCONF=yes >> /etc/sysconfig/network
/sbin/service network restart
root@wgproxy [~/ChangeGW] # vi GWVT

#!/bin/bash
echo NETWORKING=yes > /etc/sysconfig/network
echo HOSTNAME=wgproxy >> /etc/sysconfig/network
echo GATEWAY=192.168.10.1 >> /etc/sysconfig/network
echo NOZEROCONF=yes >> /etc/sysconfig/network
/sbin/service network restart


root@wgproxy [~/ChangeGW] # vi ISP

FPT #begin set content FPT, default using FPT network

root@wgproxy [~/ChangeGW] # chmod +x checkGW.py

root@wgproxy [~/ChangeGW] # chmod +x GWFPT

root@wgproxy [~/ChangeGW] # chmod +x GWVT

insert crontab run after about 1 minute:  
 * * * * * /root/ChangeGW/checkGW.py > /dev/null 2>&1 
# run 1 minute

OK Done, let's go test it 

Không có nhận xét nào:

Đăng nhận xét