none
Script cambia gateway se il ping non riesce RRS feed

  • Domanda

  • Salve a tutti,
    Vorrei creare uno script che esegua costantemente un ping verso un indirizzo IP pubblico, nel caso quell'indirizzo non fosse raggiungibile dovrebbe cambiare il gateway della mia scheda di rete. Nel frattempo continuando ad eseguire il ping verso quell'indirizzo se dovesse tornare raggiungibile dovrebbe inserire il gateway precedente.

    E' una cosa fattibile o rischio solo di incasinare la macchina?

    Pensavo di creare un batch così per il cambio del gateway:

    netsh interface ipv4 set address name="Connessione rete wireless" source=static addr=192.168.1.5 mask=255.255.255.0 gateway=192.168.1.1 gwmetric=0
    netsh interface ipv4 set dns "Connessione rete wireless" static 193.70.152.25 Primary
    netsh add dns "Connessione rete wireless" addr=208.67.222.222 index=2

    e poi:

    netsh interface ipv4 set address name="Connessione rete wireless" source=static addr=192.168.1.5 mask=255.255.255.0 gateway=192.168.1.100 gwmetric=0
    netsh interface ipv4 set dns "Connessione rete wireless" static 193.70.152.25 Primary

    netsh add dns "Connessione rete wireless" addr=208.67.222.222 index=2

    però come posso verificare l'esito del ping?

    mercoledì 17 luglio 2013 14:33

Risposte

  • qui

    http://www.mikrotik.com/testdocs/ros/2.8/appex/scripting1.php

    trovi parecchi esempi utili

    ciao.


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    venerdì 19 luglio 2013 09:18
    Moderatore
  • Un apparato con un minimo di bilanciamento e l'HA di due linee costa poche centinaia di euro, sinceramente anche io non ne comprendo il senso :)

    Andrea Gallazzi
    www.windowserver.it - blog: andreagx.blogspot.com
    This posting is provided AS IS with no warranties, and confers no rights

    • Contrassegnato come risposta Anca Popa mercoledì 24 luglio 2013 12:39
    sabato 20 luglio 2013 15:21
  • La logica del tuo script ha qualche problemino... esegue dei netsh superflui, se non dannosi!

    Ecco una versione riveduta e corretta

    @echo off
    REM Assumiamo che sia tutto funzionante
    goto :siamo_ok_testADSL
    
    :setta-GPRS
    REM ADSL ko. Cambio GW
    netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=static addr=10.2.3.8 mask=255.255.255.0 gateway=(GATEWAY.BACKUP) gwmetric=0
    netsh interface ipv4 set dns "Connessione alla rete locale (LAN)" source=static addr=8.8.8.8 register=primary
    :siamo_in_bk-testADSL
      ping -n 10 (IP.PUBBLICO) | find "TTL" >nul
      IF %ERRORLEVEL% EQU 0 goto :setta-ADSL
      REM rimango in questo loop fino a quando "ritorna" la linea adsl
    goto :siamo_in_bk-testADSL
    
    :setta-ADSL
    netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=static addr=10.2.3.8 mask=255.255.255.0 gateway=(GATEWAY.ADSL) gwmetric=0
    netsh interface ipv4 set dns "Connessione alla rete locale (LAN)" source=static addr=8.8.8.8 register=primary
    :siamo_ok_testADSL
      ping -n 10 (IP.PUBBLICO) | find "TTL" >nul
      IF %ERRORLEVEL% EQU 1 goto :setta-GPRS
      REM rimango in questo loop se la linea adsl è  funzionante
    goto :siamo_ok_testADSL

    ciao


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere











    lunedì 22 luglio 2013 09:31
    Moderatore

Tutte le risposte

  • qui

    http://www.mikrotik.com/testdocs/ros/2.8/appex/scripting1.php

    trovi parecchi esempi utili

    ciao.


    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    venerdì 19 luglio 2013 09:18
    Moderatore
  • Insisti con l'accrocchio...

    :: verifica ping
    ping 8.8.8.8 -n 2 |findstr /i "TTL" || (
    echo Aiuto  ping ko  
    )

    mi sfugge la  logica  della tua implementazione

    se non va il ping, cambi e metti il gw di bk 

    a questo punto il ping riprende   (se funziona il gw di bk)

    come fai a capire quando il primo gw ritorna attivo, dato che il ping funziona !

    usi delle rotte statiche per differenziare i ping
    es. ping 8.8.8.8 forzato sul gateway principale grazie a una route statica


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    venerdì 19 luglio 2013 14:32
    Moderatore
  • Insisti con l'accrocchio...


    uh? perché? c'era già un altro thread dello stesso argomento ?

    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    venerdì 19 luglio 2013 15:14
    Moderatore
  • Un apparato con un minimo di bilanciamento e l'HA di due linee costa poche centinaia di euro, sinceramente anche io non ne comprendo il senso :)

    Andrea Gallazzi
    www.windowserver.it - blog: andreagx.blogspot.com
    This posting is provided AS IS with no warranties, and confers no rights

    • Contrassegnato come risposta Anca Popa mercoledì 24 luglio 2013 12:39
    sabato 20 luglio 2013 15:21
  • Insisti con l'accrocchio...


    uh? perché? c'era già un altro thread dello stesso argomento ?

    Edoardo Benussi
    Microsoft MVP - Directory Services
    edo[at]mvps[dot]org

    Inizi a diventare vecchio :) http://social.technet.microsoft.com/Forums/it-IT/c9cbd445-fd0e-4cc3-a599-98d65f36f3a6/bilanciamento-carico-di-rete-in-caso-di-mancanza-rete

    sabato 20 luglio 2013 16:55
    Moderatore
  • Insisti con l'accrocchio...

    :: verifica ping
    ping 8.8.8.8 -n 2 |findstr /i "TTL" || (
    echo Aiuto  ping ko  
    )

    mi sfugge la  logica  della tua implementazione

    se non va il ping, cambi e metti il gw di bk 

    a questo punto il ping riprende   (se funziona il gw di bk)

    come fai a capire quando il primo gw ritorna attivo, dato che il ping funziona !

    usi delle rotte statiche per differenziare i ping
    es. ping 8.8.8.8 forzato sul gateway principale grazie a una route statica


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere



    Ti spiego..

    L'IP a cui faccio puntare il ping corrisponde ad un indirizzo pubblico che dovrebbe essere attivo quando la linea ADSL è funzionante.

    Volevo appunto creare uno script che funzionasse in base la "pingabilità" di quell'indirizzo, infatti, se io non lo raggiungo passo su backup, ma se una volta impostato il gateway di backup riesco a raggiungere quell'indirizzo con il ping posso ripassare in adsl.

    E' un accrocchio, non è soluzione ideale lo so bene, ma soldi per l'hardware nisba.

    lunedì 22 luglio 2013 07:25
  • Avevo abbozzato questo:

    @echo off
    ping -n 1 (IP.PUBBLICO) | find "TTL" >nul
    IF NOT ERRORLEVEL 1 goto :ADSL
    IF     ERRORLEVEL 1 goto :TESTADSL

    :TESTADSL

    @echo off
    ping -n 10 (IP.PUBBLICO) | find "TTL" >nul
    IF     ERRORLEVEL 1 goto :GPRS
    IF NOT ERRORLEVEL 1 goto :ADSL

    :TESTGPRS

    @echo off
    ping -n 10 (IP.PUBBLICO) | find "TTL" >nul
    IF NOT ERRORLEVEL 1 goto :TESTADSL
    IF     ERRORLEVEL 1 goto :GPRS

    :GPRS
    netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=static addr=10.2.3.8 mask=255.255.255.0 gateway=(GATEWAY.BACKUP) gwmetric=0
    netsh interface ipv4 set dns "Connessione alla rete locale (LAN)" source=static addr=8.8.8.8 register=primary

    goto :TESTADSL


    :ADSL
    netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=static addr=10.2.3.8 mask=255.255.255.0 gateway=(GATEWAY.ADSL) gwmetric=0
    netsh interface ipv4 set dns "Connessione alla rete locale (LAN)" source=static addr=8.8.8.8 register=primary

    goto :TESTGPRS
    lunedì 22 luglio 2013 07:29
  • La logica del tuo script ha qualche problemino... esegue dei netsh superflui, se non dannosi!

    Ecco una versione riveduta e corretta

    @echo off
    REM Assumiamo che sia tutto funzionante
    goto :siamo_ok_testADSL
    
    :setta-GPRS
    REM ADSL ko. Cambio GW
    netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=static addr=10.2.3.8 mask=255.255.255.0 gateway=(GATEWAY.BACKUP) gwmetric=0
    netsh interface ipv4 set dns "Connessione alla rete locale (LAN)" source=static addr=8.8.8.8 register=primary
    :siamo_in_bk-testADSL
      ping -n 10 (IP.PUBBLICO) | find "TTL" >nul
      IF %ERRORLEVEL% EQU 0 goto :setta-ADSL
      REM rimango in questo loop fino a quando "ritorna" la linea adsl
    goto :siamo_in_bk-testADSL
    
    :setta-ADSL
    netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=static addr=10.2.3.8 mask=255.255.255.0 gateway=(GATEWAY.ADSL) gwmetric=0
    netsh interface ipv4 set dns "Connessione alla rete locale (LAN)" source=static addr=8.8.8.8 register=primary
    :siamo_ok_testADSL
      ping -n 10 (IP.PUBBLICO) | find "TTL" >nul
      IF %ERRORLEVEL% EQU 1 goto :setta-GPRS
      REM rimango in questo loop se la linea adsl è  funzionante
    goto :siamo_ok_testADSL

    ciao


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere











    lunedì 22 luglio 2013 09:31
    Moderatore
  • Ciao Alpha,

    Evidenzio i suggerimenti sopra, in attesa delle tue notizie.

    Saluti e facci sapere com'e' andata,


    Anca Popa Follow ForumTechNetIt on Twitter

    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto viene fornito “così come è” e non comporta alcuna responsabilità da parte dell'azienda.

    mercoledì 24 luglio 2013 12:41
  • Intanto volevo ringraziare Gastone  e tutti gli altri utenti per la disponibilità in tutti i post.

    Purtroppo non ho ancora potuto provare.. spero settimana prossima. Ma è consigliabile aggiungere un dns secondario? cosa dovrei aggiungere allo script?


    andrebbe bene questa stringa:

    netsh interface ipv4 add dns "Connessione alla rete locale (LAN)" 8.8.4.4 index=2
    • Modificato Alpha91 giovedì 25 luglio 2013 08:50 riga di comando aggiunta
    giovedì 25 luglio 2013 08:39