Jump to content

healer2001

Forum Members
  • Posts

    5
  • Joined

  • Last visited

Posts posted by healer2001

  1. В 28.02.2019 в 11:04, Geont сказал:

    Немного обновил и причесал скрипт. Теперь работает стабильнее.

    #!/opt/bin/sh
    
    ConnName=Rostelecom
    counter=/opt/tmp/CountReconnectWan.txt
    previp=/opt/tmp/previp.txt
    max_tries=10
    
    LIST=`ndmq -p 'show interface' -x | xml sel -t -m '//interface[link="up"][state="up"][global="yes"][defaultgw="yes"]' -v '@name' -o ',' -v 'description' -o ',' -v 'address' -o ',' -v 'via' -n`
    echo "$LIST" | grep -iwq "$ConnName" || exit 0
    
    _ip=`echo "$LIST" | cut -d, -f3`
    _prov=`echo "$LIST" | cut -d, -f2`
    _iface=`echo "$LIST" | cut -d, -f1`
    _via=`echo "$LIST" | cut -d, -f4`
    
    if echo "$_ip" | grep -qE "^(10\.|100\.6[4-9]\.|100\.[7-9][0-9]\.|100\.1[01][0-9]\.|100\.12[0-7]\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[01]\.)"; then
        [ -f "$counter" ] || echo "0" > $counter
        try_nr=$(cat $counter)
        try_nr=$((++try_nr))
        if [ $try_nr -gt $max_tries ]; then
            echo "0" > $counter
    	logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Too much tries. Exit"
            exit
        fi
        echo "$try_nr" > $counter
        logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Reloading WAN due grey IP - $_ip. Try $try_nr of $max_tries."
        ndmq -p "interface $_iface no connect via $_via" -P message
        sleep 5
        ndmq -p "interface $_iface connect via $_via" -P message
    else
        echo "0" > $counter
        [ -f "$previp" ] || echo "0.0.0.0" > $previp
        _previp=$(cat $previp)
        if [ "$_previp" != "$_ip" ]; then
            logger -t white_ip[$$] "Provider: $_prov, interface: $_iface, white IP - $_ip."
            echo "$_ip" > $previp
        fi
    fi

    Кроме установленного пакета ndmq требуется также xmlstarlet. В переменной $ConnName (2-я строка) замените название подключения на свое - так, как оно названо у вас в web-интерфейсе. Больше ничего указывать не нужно. Подключений может быть несколько, скрипт обрабатывает только подключение с указанным названием в случае его использования в качестве основного. Расположение обычное: /opt/etc/ndm/wan.d/.

    Вот рабочий вариант

    • Thanks 1
  2. 4 часа назад, Иван Калашников сказал:

    В указаном файле обязательно, а в скрипте решайте сами надо или нет. Там он выполняется если файла нет

    Спасибо за оперативность ответа и хорошую реализацию решения.

     

  3. В 01.07.2017 в 10:31, Иван Калашников сказал:

    /opt/etc/adblock/redirection - перенаправления

     

     

     

    Если есть желания изменить перенаправления автора, то нужные адреса нужно прописывать в указанный файл или изменения нужно вносить в сам скрипт?

×
×
  • Create New...