Мини скриптик, подскажите как дописать



  • Здравствуйте.

    Крайне редко отваливается GIF интефейс, в веб-морде шлюз светится как Pending…  и что-бы все сного заработало, захожу в interfaces->opt3 сперва отключаю, потом включаю и все работает.
    Хочу по топорному закрыть этот вопрос, скрипт в крон и хрен с ним..

    В ifconfig этот тунель светится как gif0 нужно его перезапускать, но команды из шела не дают результата, что пробовал:

    
    # Так не проходит, хоть и пишет, что перезапускает
    # service netif restart gif0
    # пробовал положить его так, чтобы потом поднять
    # ifconfig gif0 down
    # но ничего не происходит в ifconfig он там остается
    
    

    Как рестартовать тунель командой? Хочу просто написать проверку пингом и рестарт тунеля в случае его отсутствия, типо:

    #!/bin/sh
    ping -c1 [ip адрес]
    
    if [ $? != 0 ]
    then
      service netif restart gif0 # Как рестартовать??
    fi
    
    


  • мож так?

    /sbin/ifconfig gif0 down

    sleep 10

    /sbin/ifconfig gif0 up

    dhclient ue0 (если нужно)



  • Доброе.
    Попробуйте переделать под себя https://forum.pfsense.org/index.php?topic=132010.0

    Что-то типа такого в cron:

    Вар.1

    #!/bin/sh
    if ping -q -c 3 ip-адрес | grep ', 0.0%' >/dev/null; then
    /sbin/ifconfig интерфейс down
    sleep 5
    /sbin/ifconfig интерфейс up
    sleep 5
    fi
    

    Вар.2

    ping -c 3 ip-адрес &> /dev/null && exit || /sbin/ifconfig интерфейс down; sleep 5; /sbin/ifconfig интерфейс up; sleep 5; exit
    


  • Вся соль в том, что```
    /sbin/ifconfig интерфейс down

    
    Я перепробовал по разному его отрубать, никак! Со скриптом SH проблем нет, мой алгоритм в 1-м посте нормально определяет, есть сеть или ее нету. А вот интерфейс положит - я сам удивлен, но никак не положить не убить его вручную.
    
    За ответы спасибо, я написал конкретный топор на PHP + cURL, авторизируемся, отправляем POST о отключении и POST о включении. Работает, хрен с ним. Под пиво убил 2-а часа времени, поэтому выглядит сейчас так:
    

    #!/bin/sh
    ping -c1 [ip адрес]

    if [ $? != 0 ]
    then
      /usr/local/bin/php /root/utils/reset.gif.php
    fi

    
    Это скорее всего из-за тунеля, который образуется в веб-интерфейсе дополнительными различными настройками и как-то скорее всего контролируется pfsense.
    
    Не буду описывать свой тупой костыль в PHP если кому и пригодится, пишите.
    
    P./S.: Я не нашел API для pfSense, но в принципе я и сделал под себя класс PHP с cURL, но могут со временем возникнуть проблемы т.к. если веб-морду поменяют и в POST надо будет добавлять параметры, читать исходник от pfSense желания если честно нет, это займет просто больше времени конкретно для меня. Так, что топор-топором, главное результат.