Mi aporte para esta comunidad (SCRIPT FAILOVER PARA 4 LINEAS)

Publicado por bacalao, Marzo 16, 2015, 02:00:20 PM

Tema anterior - Siguiente tema

bacalao

Buenas a todos aquí les dejo mi aporte, el script me lo paso un amigo Cesar Rivas que tenia la idea y y lo termine modificando. Lo único que pido es que mantenga quien lo envió y quien lo modifico

Este script es muy funcional para los que tenemos mikrotik, que hace muy sencillo el verifica que las lineas de Internet que tengamos (wan) esten operativas, si una de ellas esta caída toma cualquiera que este operativa. Ejemplo:

Tenemos 4 Lineas con las siguientes IP

1.- 186.89.192.1
2.- 190.201.0.1
3.- 190.198.224.1
4.- 190.201.160.1

Se pierde la ip de la linea 2
1.- 186.89.192.1
2.-
3.- 190.198.224.1
4.- 190.201.160.1

entonces el script revisa y te asigna la ip de la linea 1 quedando asi
1.- 186.89.192.1
2.- 186.89.192.1
3.- 190.198.224.1
4.- 190.201.160.1


Script para la linea 1
Código (php) [Seleccionar]

#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD

#Se toman las variables de las interfaces donde esten conectados la WAN
:global GA [/ip dhcp-client get [find interface=ether2-gateway1] gateway]
:global GB [/ip dhcp-client get [find interface=ether3-gateway2] gateway]
:global GC [/ip dhcp-client get [find interface=ether4-Gateway3] gateway]
:global GD [/ip dhcp-client get [find interface=ether5-Gateway4] gateway]

#creamos variables globales
:global pingresultA
:global pingresultB
:global pingresultC
:global pingresultD
:global access 0


:if ([:len $GA] != 0) do={
                :global pingresultA  [/ping $GA interface=ether2-gateway1 count=4]
} else={
               :global pingresultA 0
}

#Si WAN1 esta activo:

:if ($pingresultA>0) do={
    :local gatewayNuevo [/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
    :local gatewayActivo [/ip route get [find routing-mark=to_Wan1] gateway ]
    :if ($gatewayNuevo != $gatewayActivo) do={
/ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
:log info "Wan1 activo y se actualiza Gateway"
    }   
   
}

#Si WAN1 se cae:
:if ($pingresultA=0) do={

                :local status [/ip dhcp-client get [/ip dhcp-client find interface=ether2-gateway1] status ]
                 :if ($status="bound") do={
                                 /ip dhcp-client set [find interface=ether2-gateway1] disabled=yes
                                :local d [/ip dhcp-client get [/ip dhcp-client find interface=ether2-gateway1] disabled ]
                                 :if ($d=true) do={
                                         /ip dhcp-client set [find interface=ether2-gateway1] disabled=no
                                   }
                 }
             
                 :if ([:len $GB] != 0) do={
                       :global pingresultB  [/ping $GB interface=ether3-gateway2 count=4]
                 } else={
                       :global pingresultB 0               
                 }

:if ($pingresultB>0 and $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan1] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
:log info "Wan1 inactivo se le asigna el Gateway del Wan2 "
}
                       :global access 1
}

         :if ([:len $GC] != 0) do={
                       :global pingresultC  [/ping $GC interface=ether4-Gateway3 count=4]
                 } else={
                       :global pingresultC 0               
                 }

:if ($pingresultC>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan1] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
  :log info "Wan1 inactivo se le asigna el Gateway del Wan3 "
}
                       :global access 1
}
               :if ([:len $GD] != 0) do={
                       :global pingresultD  [/ping $GD interface=ether5-Gateway4 count=4]
                 } else={
                       :global pingresultD 0               
                 }

:if ($pingresultD>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan1] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
:log info "Wan1 inactivo se le asigna el Gateway del Wan4 "
}
                  :global access 1

}
}


Script para la linea 2

Código (php) [Seleccionar]

#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD

:global GA [/ip dhcp-client get [find interface=ether2-gateway1] gateway]
:global GB [/ip dhcp-client get [find interface=ether3-gateway2] gateway]
:global GC [/ip dhcp-client get [find interface=ether4-Gateway3] gateway]
:global GD [/ip dhcp-client get [find interface=ether5-Gateway4] gateway]


:global pingresultA
:global pingresultB
:global pingresultC
:global pingresultD
:global access 0


:if ([:len $GB] != 0) do={
                :global pingresultB  [/ping $GB interface=ether3-gateway2 count=4]
} else={
               :global pingresultB 0
}

#Si WAN2 esta activo:
:if ($pingresultB>0) do={
    :local gatewayNuevo [/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
    :local gatewayActivo [/ip route get [find routing-mark=to_Wan2] gateway ]
    :if ($gatewayNuevo != $gatewayActivo) do={
/ip route set [find routing-mark=to_Wan2] gateway=[/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
:log info "Wan2 activo y se actualiza Gateway"
    }   
   
}

#Si WAN2 se cae:
:if ($pingresultB=0) do={

                :local status [/ip dhcp-client get [/ip dhcp-client find interface=ether3-gateway2] status ]
                 :if ($status="bound") do={
                                 /ip dhcp-client set [find interface=ether3-gateway2] disabled=yes
                                :local d [/ip dhcp-client get [/ip dhcp-client find interface=ether3-gateway2] disabled ]
                                 :if ($d=true) do={
                                         /ip dhcp-client set [find interface=ether3-gateway2] disabled=no
                                   }
                 }
             
                 :if ([:len $GA] != 0) do={
                       :global pingresultA  [/ping $GA interface=ether2-gateway1 count=4]
                 } else={
                       :global pingresultA 0               
                 }

:if ($pingresultA>0 and $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan2] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan2] gateway=[/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
:log info "Wan2 inactivo se le asigna el Gateway del Wan1 "
}
                       :global access 1
}

         :if ([:len $GC] != 0) do={
                       :global pingresultC  [/ping $GC interface=ether4-Gateway3 count=4]
                 } else={
                       :global pingresultC 0               
                 }

:if ($pingresultC>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan2] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan2] gateway=[/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
  :log info "Wan2 inactivo se le asigna el Gateway del Wan3 "
}
                       :global access 1
}
               :if ([:len $GD] != 0) do={
                       :global pingresultD  [/ping $GD interface=ether5-Gateway4 count=4]
                 } else={
                       :global pingresultD 0               
                 }

:if ($pingresultD>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan2] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan2] gateway=[/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
:log info "Wan2 inactivo se le asigna el Gateway del Wan4 "
}
                  :global access 1

}
}


Script para la linea 3

Código (php) [Seleccionar]

#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD

:global GA [/ip dhcp-client get [find interface=ether2-gateway1] gateway]
:global GB [/ip dhcp-client get [find interface=ether3-gateway2] gateway]
:global GC [/ip dhcp-client get [find interface=ether4-Gateway3] gateway]
:global GD [/ip dhcp-client get [find interface=ether5-Gateway4] gateway]


:global pingresultA
:global pingresultB
:global pingresultC
:global pingresultD
:global access 0


:if ([:len $GC] != 0) do={
                :global pingresultC  [/ping $GC interface=ether4-Gateway3 count=4]
} else={
               :global pingresultC 0
}

#Si WAN3 esta activo:
:if ($pingresultC>0) do={
    :local gatewayNuevo [/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
    :local gatewayActivo [/ip route get [find routing-mark=to_Wan3] gateway ]
    :if ($gatewayNuevo != $gatewayActivo) do={
/ip route set [find routing-mark=to_Wan3] gateway=[/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
:log info "Wan3 activo y se actualiza Gateway"
    }   
   
}

#Si WAN3 se cae:
:if ($pingresultC=0) do={

                :local status [/ip dhcp-client get [/ip dhcp-client find interface=ether4-Gateway3] status ]
                 :if ($status="bound") do={
                                 /ip dhcp-client set [find interface=ether4-Gateway3] disabled=yes
                                :local d [/ip dhcp-client get [/ip dhcp-client find interface=ether4-Gateway3] disabled ]
                                 :if ($d=true) do={
                                         /ip dhcp-client set [find interface=ether4-Gateway3] disabled=no
                                   }
                 }
             
                 :if ([:len $GA] != 0) do={
                       :global pingresultA  [/ping $GA interface=ether2-gateway1 count=4]
                 } else={
                       :global pingresultA 0               
                 }

:if ($pingresultA>0 and $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan3] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan3] gateway=[/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
:log info "Wan3 inactivo se le asigna el Gateway del Wan1 "
}
                       :global access 1
}

         :if ([:len $GB] != 0) do={
                       :global pingresultC  [/ping $GB interface=ether3-gateway2 count=4]
                 } else={
                       :global pingresultC 0               
                 }

:if ($pingresultB>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan3] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan3] gateway=[/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
  :log info "Wan3 inactivo se le asigna el Gateway del Wan2 "
}
                       :global access 1
}
               :if ([:len $GD] != 0) do={
                       :global pingresultD  [/ping $GD interface=ether5-Gateway4 count=4]
                 } else={
                       :global pingresultD 0               
                 }

:if ($pingresultD>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan3] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan3] gateway=[/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
:log info "Wan3 inactivo se le asigna el Gateway del Wan4 "
}
                  :global access 1

}
}


Script para la linea 4

Código (php) [Seleccionar]

#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD

:global GA [/ip dhcp-client get [find interface=ether2-gateway1] gateway]
:global GB [/ip dhcp-client get [find interface=ether3-gateway2] gateway]
:global GC [/ip dhcp-client get [find interface=ether4-Gateway3] gateway]
:global GD [/ip dhcp-client get [find interface=ether5-Gateway4] gateway]


:global pingresultA
:global pingresultB
:global pingresultC
:global pingresultD
:global access 0


:if ([:len $GD] != 0) do={
                :global pingresultC  [/ping $GD interface=ether5-Gateway4 count=4]
} else={
               :global pingresultD 0
}

#Si WAN4 esta activo:
:if ($pingresultD>0) do={
    :local gatewayNuevo [/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
    :local gatewayActivo [/ip route get [find routing-mark=to_Wan4] gateway ]
    :if ($gatewayNuevo != $gatewayActivo) do={
/ip route set [find routing-mark=to_Wan4] gateway=[/ip dhcp-client get [find interface=ether5-Gateway4] gateway ]
:log info "Wan4 activo y se actualiza Gateway"
    }   
   
}

#Si WAN4 se cae:
:if ($pingresultD=0) do={

                :local status [/ip dhcp-client get [/ip dhcp-client find interface=ether5-Gateway4] status ]
                 :if ($status="bound") do={
                                 /ip dhcp-client set [find interface=ether5-Gateway4] disabled=yes
                                :local d [/ip dhcp-client get [/ip dhcp-client find interface=ether5-Gateway4] disabled ]
                                 :if ($d=true) do={
                                         /ip dhcp-client set [find interface=ether5-Gateway4] disabled=no
                                   }
                 }
             
                 :if ([:len $GA] != 0) do={
                       :global pingresultA  [/ping $GA interface=ether2-gateway1 count=4]
                 } else={
                       :global pingresultA 0               
                 }

:if ($pingresultA>0 and $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan4] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan4] gateway=[/ip dhcp-client get [find interface=ether2-gateway1] gateway ]
:log info "Wan4 inactivo se le asigna el Gateway del Wan1 "
}
                       :global access 1
}

         :if ([:len $GB] != 0) do={
                       :global pingresultC  [/ping $GB interface=ether3-gateway2 count=4]
                 } else={
                       :global pingresultC 0               
                 }

:if ($pingresultB>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan4] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan4] gateway=[/ip dhcp-client get [find interface=ether3-gateway2] gateway ]
  :log info "Wan4 inactivo se le asigna el Gateway del Wan2 "
}
                       :global access 1
}
               :if ([:len $GC] != 0) do={
                       :global pingresultC  [/ping $GC interface=ether4-Gateway3 count=4]
                 } else={
                       :global pingresultC 0               
                 }

:if ($pingresultC>0 && $access=0) do={
:local gatewayNuevoB [/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
    :local gatewayActivoA [/ip route get [find routing-mark=to_Wan4] gateway ]
:if ($gatewayNuevoB != $gatewayActivoA) do={
/ip route set [find routing-mark=to_Wan4] gateway=[/ip dhcp-client get [find interface=ether4-Gateway3] gateway ]
:log info "Wan4 inactivo se le asigna el Gateway del Wan3 "
}
                  :global access 1

}
}


josemanuel155

gracias mi hermano lo que estaba esperandoo :) :) :) :) :)

una pregunta copio y pego todo esto tal como esta tengo que hacer una modificacion ??

aqui esta ether2 ether3 ether 4 eso lo tendria que cambiar porque lo tengo como wan1 wan2 wan3 wan4
??
un saludos para todos desde venezuela

bacalao

Cita de: josemanuel155 en Marzo 16, 2015, 04:29:42 PM
gracias mi hermano lo que estaba esperandoo :) :) :) :) :)

una pregunta copio y pego todo esto tal como esta tengo que hacer una modificacion ??

aqui esta ether2 ether3 ether 4 eso lo tendria que cambiar porque lo tengo como wan1 wan2 wan3 wan4
??

Hola si por ejemplo los que digan esto :global GA [/ip dhcp-client get [find interface=ether2-gateway1] gateway] y si es como dices lo pasas :global GA [/ip dhcp-client get [find interface=wan1] gateway]

Tienes q estar pendiente de las mayusculas y minusculas

josemanuel155

Cita de: bacalao en Marzo 16, 2015, 05:20:50 PM
Hola si por ejemplo los que digan esto :global GA [/ip dhcp-client get [find interface=ether2-gateway1] gateway] y si es como dices lo pasas :global GA [/ip dhcp-client get [find interface=wan1] gateway]

Tienes q estar pendiente de las mayusculas y minusculas


mi hermano gracia por ayudarme aqui modifique el primer scrip para ver si esta bien



#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD
     
    #Se toman las variables de las interfaces donde esten conectados la wan
    :global GA [/ip dhcp-client get [find interface=wan2-gateway1] gateway]
    :global GB [/ip dhcp-client get [find interface=wan3-gateway2] gateway]
    :global GC [/ip dhcp-client get [find interface=wan4-Gateway3] gateway]
    :global GD [/ip dhcp-client get [find interface=wan5-Gateway4] gateway]
     
    #creamos variables globales
    :global pingresultA
    :global pingresultB
    :global pingresultC
    :global pingresultD
    :global access 0
     
     
    :if ([:len $GA] != 0) do={
                    :global pingresultA  [/ping $GA interface=wan2-gateway1 count=4]
    } else={
                   :global pingresultA 0
    }
     
    #Si wan1 esta activo:
     
    :if ($pingresultA>0) do={
        :local gatewayNuevo [/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
        :local gatewayActivo [/ip route get [find routing-mark=to_wan1] gateway ]
        :if ($gatewayNuevo != $gatewayActivo) do={
            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
            :log info "wan1 activo y se actualiza Gateway"
        } 
       
    }
     
    #Si wan1 se cae:
    :if ($pingresultA=0) do={
     
                    :local status [/ip dhcp-client get [/ip dhcp-client find interface=wan2-gateway1] status ]
                     :if ($status="bound") do={
                                     /ip dhcp-client set [find interface=wan2-gateway1] disabled=yes
                                    :local d [/ip dhcp-client get [/ip dhcp-client find interface=wan2-gateway1] disabled ]
                                     :if ($d=true) do={
                                             /ip dhcp-client set [find interface=wan2-gateway1] disabled=no
                                       }
                     }
                 
                     :if ([:len $GB] != 0) do={
                           :global pingresultB  [/ping $GB interface=wan3-gateway2 count=4]
                     } else={
                           :global pingresultB 0             
                     }
     
            :if ($pingresultB>0 and $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
                            :log info "Wan1 inactivo se le asigna el Gateway del wan2 "
                    }     
                           :global access 1
            }
     
             :if ([:len $GC] != 0) do={
                           :global pingresultC  [/ping $GC interface=wan4-Gateway3 count=4]
                     } else={
                           :global pingresultC 0             
                     }
     
            :if ($pingresultC>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                            :log info "Wan1 inactivo se le asigna el Gateway del wan3 "
                    }     
                           :global access 1       
            }
                   :if ([:len $GD] != 0) do={
                           :global pingresultD  [/ping $GD interface=wan5-Gateway4 count=4]
                     } else={
                           :global pingresultD 0             
                     }
     
            :if ($pingresultD>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                            :log info "wan1 inactivo se le asigna el Gateway del wan4 "
                    }     
                      :global access 1
     
            }
    }
     
un saludos para todos desde venezuela

bacalao

Cita de: josemanuel155 en Marzo 16, 2015, 06:01:05 PM

mi hermano gracia por ayudarme aqui modifique el primer scrip para ver si esta bien



#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD
     
    #Se toman las variables de las interfaces donde esten conectados la wan
    :global GA [/ip dhcp-client get [find interface=wan2-gateway1] gateway]
    :global GB [/ip dhcp-client get [find interface=wan3-gateway2] gateway]
    :global GC [/ip dhcp-client get [find interface=wan4-Gateway3] gateway]
    :global GD [/ip dhcp-client get [find interface=wan5-Gateway4] gateway]
     
    #creamos variables globales
    :global pingresultA
    :global pingresultB
    :global pingresultC
    :global pingresultD
    :global access 0
     
     
    :if ([:len $GA] != 0) do={
                    :global pingresultA  [/ping $GA interface=wan2-gateway1 count=4]
    } else={
                   :global pingresultA 0
    }
     
    #Si wan1 esta activo:
     
    :if ($pingresultA>0) do={
        :local gatewayNuevo [/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
        :local gatewayActivo [/ip route get [find routing-mark=to_wan1] gateway ]
        :if ($gatewayNuevo != $gatewayActivo) do={
            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
            :log info "wan1 activo y se actualiza Gateway"
        } 
       
    }
     
    #Si wan1 se cae:
    :if ($pingresultA=0) do={
     
                    :local status [/ip dhcp-client get [/ip dhcp-client find interface=wan2-gateway1] status ]
                     :if ($status="bound") do={
                                     /ip dhcp-client set [find interface=wan2-gateway1] disabled=yes
                                    :local d [/ip dhcp-client get [/ip dhcp-client find interface=wan2-gateway1] disabled ]
                                     :if ($d=true) do={
                                             /ip dhcp-client set [find interface=wan2-gateway1] disabled=no
                                       }
                     }
                 
                     :if ([:len $GB] != 0) do={
                           :global pingresultB  [/ping $GB interface=wan3-gateway2 count=4]
                     } else={
                           :global pingresultB 0             
                     }
     
            :if ($pingresultB>0 and $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
                            :log info "Wan1 inactivo se le asigna el Gateway del wan2 "
                    }     
                           :global access 1
            }
     
             :if ([:len $GC] != 0) do={
                           :global pingresultC  [/ping $GC interface=wan4-Gateway3 count=4]
                     } else={
                           :global pingresultC 0             
                     }
     
            :if ($pingresultC>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                            :log info "Wan1 inactivo se le asigna el Gateway del wan3 "
                    }     
                           :global access 1       
            }
                   :if ([:len $GD] != 0) do={
                           :global pingresultD  [/ping $GD interface=wan5-Gateway4 count=4]
                     } else={
                           :global pingresultD 0             
                     }
     
            :if ($pingresultD>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                            :log info "wan1 inactivo se le asigna el Gateway del wan4 "
                    }     
                      :global access 1
     
            }
    }
   

amigo mio pasame tu id y password del team y te ayudo gustosamente a que este perfecto el failover

josemanuel155

saludo hermano estaba terminando de modificar todo los scrip

no esta bien la modificacion ??
en estos momento tengo que salir a la iglesia pero regreso en 2 horas y medias lo que subi fue el primer escrip de la linea 1
un saludos para todos desde venezuela

bacalao

Cita de: josemanuel155 en Marzo 16, 2015, 06:30:06 PM
saludo hermano estaba terminando de modificar todo los scrip

no esta bien la modificacion ??
en estos momento tengo que salir a la iglesia pero regreso en 2 horas y medias lo que subi fue el primer escrip de la linea 1
Si tu interface de red se llama wan1.....5 deberia quedar asi
Código (php) [Seleccionar]

    :global GA [/ip dhcp-client get [find interface=wan2] gateway]
    :global GB [/ip dhcp-client get [find interface=wan3] gateway]
    :global GC [/ip dhcp-client get [find interface=wan4] gateway]
    :global GD [/ip dhcp-client get [find interface=wan5] gateway]

TooR

Cita de: bacalao en Marzo 16, 2015, 06:59:56 PM
Si tu interface de red se llama wan1.....5 deberia quedar asi
Código (php) [Seleccionar]

    :global GA [/ip dhcp-client get [find interface=wan2] gateway]
    :global GB [/ip dhcp-client get [find interface=wan3] gateway]
    :global GC [/ip dhcp-client get [find interface=wan4] gateway]
    :global GD [/ip dhcp-client get [find interface=wan5] gateway]


Ademas pendientes con el routing-mark=to_WanX
X= 1, 2, 3, 4  :-*

Si usan la misma to_Wan1, to_Wan2, to_Wan3, to_Wan4 no habrá problema.

bacalao

Cita de: TooR en Marzo 16, 2015, 07:33:57 PM
Ademas pendientes con el routing-mark=to_WanX
X= 1, 2, 3, 4  :-*

Si usan la misma to_Wan1, to_Wan2, to_Wan3, to_Wan4 no habrá problema.

gracias amigo Toor se me paso decir sobre el routing-mark.

lo mas importante es leer, aprender y aplicar

saludos

josemanuel155

bueno este es el primer scrip corregido mi wan son wan1 wan2 wan3 wan4 y lan



#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD
     
    #Se toman las variables de las interfaces donde esten conectados la wan
    :global GA [/ip dhcp-client get [find interface=wan2-gateway]
    :global GB [/ip dhcp-client get [find interface=wan3-gateway]
    :global GC [/ip dhcp-client get [find interface=wan4-Gateway]
    :global GD [/ip dhcp-client get [find interface=wan5-Gateway]
     
    #creamos variables globales
    :global pingresultA
    :global pingresultB
    :global pingresultC
    :global pingresultD
    :global access 0
     
     
    :if ([:len $GA] != 0) do={
                    :global pingresultA  [/ping $GA interface=wan2-gateway1 count=4]
    } else={
                   :global pingresultA 0
    }
     
    #Si wan1 esta activo:
     
    :if ($pingresultA>0) do={
        :local gatewayNuevo [/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
        :local gatewayActivo [/ip route get [find routing-mark=to_wan1] gateway ]
        :if ($gatewayNuevo != $gatewayActivo) do={
            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
            :log info "wan1 activo y se actualiza Gateway"
        } 
       
    }
     
    #Si wan1 se cae:
    :if ($pingresultA=0) do={
     
                    :local status [/ip dhcp-client get [/ip dhcp-client find interface=wan2-gateway1] status ]
                     :if ($status="bound") do={
                                     /ip dhcp-client set [find interface=wan2-gateway1] disabled=yes
                                    :local d [/ip dhcp-client get [/ip dhcp-client find interface=wan2-gateway1] disabled ]
                                     :if ($d=true) do={
                                             /ip dhcp-client set [find interface=wan2-gateway1] disabled=no
                                       }
                     }
                 
                     :if ([:len $GB] != 0) do={
                           :global pingresultB  [/ping $GB interface=wan3-gateway2 count=4]
                     } else={
                           :global pingresultB 0             
                     }
     
            :if ($pingresultB>0 and $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
                            :log info "Wan1 inactivo se le asigna el Gateway del wan2 "
                    }     
                           :global access 1
            }
     
             :if ([:len $GC] != 0) do={
                           :global pingresultC  [/ping $GC interface=wan4-Gateway3 count=4]
                     } else={
                           :global pingresultC 0             
                     }
     
            :if ($pingresultC>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                            :log info "Wan1 inactivo se le asigna el Gateway del wan3 "
                    }     
                           :global access 1       
            }
                   :if ([:len $GD] != 0) do={
                           :global pingresultD  [/ping $GD interface=wan5-Gateway4 count=4]
                     } else={
                           :global pingresultD 0             
                     }
     
            :if ($pingresultD>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_Wan1] gateway=[/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                            :log info "wan1 inactivo se le asigna el Gateway del wan4 "
                    }     
                      :global access 1
     
            }
    }
     
un saludos para todos desde venezuela

josemanuel155

scrip linea 2



Citar#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD
     
    :global GA [/ip dhcp-client get [find interface=wan2-gateway]
    :global GB [/ip dhcp-client get [find interface=wan3-gateway]
    :global GC [/ip dhcp-client get [find interface=wan4-Gateway]
    :global GD [/ip dhcp-client get [find interface=wan5-Gateway]
     
     
    :global pingresultA
    :global pingresultB
    :global pingresultC
    :global pingresultD
    :global access 0
     
     
    :if ([:len $GB] != 0) do={
                    :global pingresultB  [/ping $GB interface=wan3-gateway2 count=4]
    } else={
                   :global pingresultB 0
    }
     
    #Si wan2 esta activo:
    :if ($pingresultB>0) do={
        :local gatewayNuevo [/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
        :local gatewayActivo [/ip route get [find routing-mark=to_wan2] gateway ]
        :if ($gatewayNuevo != $gatewayActivo) do={
            /ip route set [find routing-mark=to_wan2] gateway=[/ip dhcp-client get [find interface=wan3-gateway2] gateway ]
            :log info "wan2 activo y se actualiza Gateway"
        } 
       
    }
     
    #Si wan2 se cae:
    :if ($pingresultB=0) do={
     
                    :local status [/ip dhcp-client get [/ip dhcp-client find interface=wan3-gateway2] status ]
                     :if ($status="bound") do={
                                     /ip dhcp-client set [find interface=wan3-gateway2] disabled=yes
                                    :local d [/ip dhcp-client get [/ip dhcp-client find interface=wan3-gateway2] disabled ]
                                     :if ($d=true) do={
                                             /ip dhcp-client set [find interface=wan3-gateway2] disabled=no
                                       }
                     }
                 
                     :if ([:len $GA] != 0) do={
                           :global pingresultA  [/ping $GA interface=wan2-gateway1 count=4]
                     } else={
                           :global pingresultA 0             
                     }
     
            :if ($pingresultA>0 and $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan2] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan2] gateway=[/ip dhcp-client get [find interface=wan2-gateway1] gateway ]
                            :log info "wan2 inactivo se le asigna el Gateway del wan1 "
                    }     
                           :global access 1
            }
     
             :if ([:len $GC] != 0) do={
                           :global pingresultC  [/ping $GC interface=wan4-Gateway3 count=4]
                     } else={
                           :global pingresultC 0             
                     }
     
            :if ($pingresultC>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan2] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan2] gateway=[/ip dhcp-client get [find interface=wan4-Gateway3] gateway ]
                            :log info "wan2 inactivo se le asigna el Gateway del wan3 "
                    }     
                           :global access 1       
            }
                   :if ([:len $GD] != 0) do={
                           :global pingresultD  [/ping $GD interface=wan5-Gateway4 count=4]
                     } else={
                           :global pingresultD 0             
                     }
     
            :if ($pingresultD>0 && $access=0) do={
                    :local gatewayNuevoB [/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                    :local gatewayActivoA [/ip route get [find routing-mark=to_wan2] gateway ]
                    :if ($gatewayNuevoB != $gatewayActivoA) do={
                            /ip route set [find routing-mark=to_wan2] gateway=[/ip dhcp-client get [find interface=wan5-Gateway4] gateway ]
                            :log info "wan2 inactivo se le asigna el Gateway del wan4 "
                    }     
                      :global access 1
     
            }
    }
     
     
un saludos para todos desde venezuela

firecold

Amigo al principio de su post puede poner una descripcion bastante descriptiva de lo que hace dicho script y su funcionamiento, ya que para los no versados en MK, no nos dice nada, saludos

josemanuel155

saludo hermanos del forum
gracias a bacalao por su ayuda realize el procedimiento y adjunto imagen de mi balanceador para ver si si esta bien  :D :D :D :D


un saludos para todos desde venezuela

josemanuel155

un saludos para todos desde venezuela

TooR

Saludos,

Si nombra sus interfaces como "wan1, wan2, wan3, wan4"... Por que en los script las tiene con wan2, wan3, wan4, wan5 ???

:global GA [/ip dhcp-client get [find interface=wan2-gateway]
:global GB [/ip dhcp-client get [find interface=wan3-gateway]
:global GC [/ip dhcp-client get [find interface=wan4-Gateway]
:global GD [/ip dhcp-client get [find interface=wan5-Gateway]




Lo otro, es que debido a que el nombre del script lo coloco con espacio "script wan1", al agregarlo al Scheduler el nombre debe ir con comillas:

sys scr run "script wan1"



:-*

Debería colocar una imagen de lo que tenga en IP - ROUTE, ese es otro punto importante para que el script funcione, esto depende del tipo de balanceo que utiliza.

josemanuel155

ufffff parece que esta mal hay que volver a modificar todo tienes razon mis wan   son wan1  wan2 wan3 wan4  :D
aqui otra imagen del router



un saludos para todos desde venezuela

josemanuel155

saludo hermano entonce deberia de quedar asi

:global GA [/ip dhcp-client get [find interface=wan1-gateway]
:global GB [/ip dhcp-client get [find interface=wan2-gateway]
:global GC [/ip dhcp-client get [find interface=wan3-Gateway]
:global GD [/ip dhcp-client get [find interface=wan4-Gateway]


el problema es que tengo que cambiar todo lo del scrip 
ya corregi lo de las comillas con razon no funciona jejeje pero estoy aprendiendo
un saludos para todos desde venezuela

bacalao

Cita de: josemanuel155 en Marzo 19, 2015, 08:13:04 AM
saludo hermano entonce deberia de quedar asi

:global GA [/ip dhcp-client get [find interface=wan1-gateway]
:global GB [/ip dhcp-client get [find interface=wan2-gateway]
:global GC [/ip dhcp-client get [find interface=wan3-Gateway]
:global GD [/ip dhcp-client get [find interface=wan4-Gateway]


el problema es que tengo que cambiar todo lo del scrip 
ya corregi lo de las comillas con razon no funciona jejeje pero estoy aprendiendo


Buenas amigo eso debe quedar asi

Código (php) [Seleccionar]

:global GA [/ip dhcp-client get [find interface=wan1]gateway]
:global GB [/ip dhcp-client get [find interface=wan2]gateway]
:global GC [/ip dhcp-client get [find interface=wan3]gateway]
:global GD [/ip dhcp-client get [find interface=wan4]gateway]


de los que yo te pase te voy a modificar el script para  la linea 1 y tu modificaras el resto

Código (php) [Seleccionar]

#SCRIPT ENVIADO POR CESAR O. RIVAS Y MODIFICADO POR MOHAMED W. HAMMAUD

#Se toman las variables de las interfaces donde esten conectados la WAN
:global GA [/ip dhcp-client get [find interface=wan1] gateway]
:global GB [/ip dhcp-client get [find interface=wan2] gateway]
:global GC [/ip dhcp-client get [find interface=wan3] gateway]
:global GD [/ip dhcp-client get [find interface=wan4] gateway]

#creamos variables globales
:global pingresultA
:global pingresultB
:global pingresultC
:global pingresultD
:global access 0


:if ([:len $GA] != 0) do={
                :global pingresultA  [/ping $GA interface=wan1 count=4]
} else={
               :global pingresultA 0
}

#Si WAN1 esta activo:

:if ($pingresultA>0) do={
    :local gatewayNuevo [/ip dhcp-client get [find interface=wan1] gateway ]
    :local gatewayActivo [/ip route get [find routing-mark=to_wan1] gateway ]
    :if ($gatewayNuevo != $gatewayActivo) do={
        /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan1] gateway ]
        :log info "Wan1 activo y se actualiza Gateway"
    }   
   
}

#Si WAN1 se cae:
:if ($pingresultA=0) do={

                :local status [/ip dhcp-client get [/ip dhcp-client find interface=wan1] status ]
                 :if ($status="bound") do={
                                 /ip dhcp-client set [find interface=wan1] disabled=yes
                                :local d [/ip dhcp-client get [/ip dhcp-client find interface=wan1] disabled ]
                                 :if ($d=true) do={
                                         /ip dhcp-client set [find interface=wan1] disabled=no
                                   }
                 }
             
                 :if ([:len $GB] != 0) do={
                       :global pingresultB  [/ping $GB interface=wan2 count=4]
                 } else={
                       :global pingresultB 0               
                 }

        :if ($pingresultB>0 and $access=0) do={
                :local gatewayNuevoB [/ip dhcp-client get [find interface=wan2] gateway ]
                :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                :if ($gatewayNuevoB != $gatewayActivoA) do={
                        /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan2] gateway ]
                        :log info "Wan1 inactivo se le asigna el Gateway del Wan2 "
                }       
                       :global access 1
        }

         :if ([:len $GC] != 0) do={
                       :global pingresultC  [/ping $GC interface=wan3 count=4]
                 } else={
                       :global pingresultC 0               
                 }

        :if ($pingresultC>0 && $access=0) do={
                :local gatewayNuevoB [/ip dhcp-client get [find interface=wan3] gateway ]
                :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                :if ($gatewayNuevoB != $gatewayActivoA) do={
                        /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan3] gateway ]
                        :log info "Wan1 inactivo se le asigna el Gateway del Wan3 "
                }       
                       :global access 1         
        }
               :if ([:len $GD] != 0) do={
                       :global pingresultD  [/ping $GD interface=wan4 count=4]
                 } else={
                       :global pingresultD 0               
                 }

        :if ($pingresultD>0 && $access=0) do={
                :local gatewayNuevoB [/ip dhcp-client get [find interface=wan4] gateway ]
                :local gatewayActivoA [/ip route get [find routing-mark=to_wan1] gateway ]
                :if ($gatewayNuevoB != $gatewayActivoA) do={
                        /ip route set [find routing-mark=to_wan1] gateway=[/ip dhcp-client get [find interface=wan4] gateway ]
                        :log info "Wan1 inactivo se le asigna el Gateway del Wan4 "
                }       
                  :global access 1

        }
}


Suerte con la modificacion de los demas

josemanuel155

gracia mi hermano voy a modificar los demas cuando lo modifico lo subo  jejeje gracias  :)
un saludos para todos desde venezuela

jhonnywifi

saludos a todos desde trujillo venezuela este hilo todavia esta activo alguien me puede echar una mano...gracias