Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
В 28.05.2026 в 23:55, Denis P сказал:

ваш скрипт в принципе не может быть рабочим, конкретно

        ndmcli connection PPPoE0 disconnect
        sleep 5
        ndmcli connection PPPoE0 connect

        sleep 15

        ndmcli service keenetic-cloud restart

ndmcli не существует в природе как и service keenetic-cloud restart 

Да действительно, эта часть кода не выполнялась, я ее перепишу. Возможно просто везло, но за NAT не попадал

Опубликовано

claude мне такое запилил после многократных попыток, у меня работает так, если проверять ip на ppp0, а перезапускать wan

#!/opt/bin/sh

# Конфигурация
ConnInterface="eth3"
PPPInterface="ppp0"
counter="/opt/tmp/CountReconnectWan.txt"
previp="/opt/tmp/previp.txt"
log="/opt/tmp/log.txt"
max_tries=9

# Берём IP напрямую с ppp0, не полагаясь на переменные NDM
address=$(ifconfig "$PPPInterface" 2>/dev/null | awk '/inet addr/{print $2}' | cut -d: -f2)

# Нет адреса на ppp0 — интерфейс ещё не поднялся, выходим
if [ -z "$address" ]; then
    exit 0
fi

# Логи и сначала очистка
echo "" > "$log"
echo "Интерфейс PPPoE: $PPPInterface, WAN для перезапуска: $ConnInterface" >> "$log"
echo "ip: $address" >> "$log"
echo "Попыток:" $(cat "$counter" 2>/dev/null || echo 0) >> "$log"

# Проверка на серый IP
if echo "$address" | 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
    # Файл есть?
    if [ ! -f "$counter" ]; then
        echo "0" > "$counter"
        echo "Нет файла счётчика. Создаём, вписываем 0 в него" >> "$log"
    fi
    # Увеличиваем счётчик попыток
    echo "Увеличиваем счётчик" >> "$log"
    try_nr=$(cat "$counter")
    try_nr=$((try_nr + 1))
    if [ "$try_nr" -gt "$max_tries" ]; then
        echo "Лимит по счётчику, выходим" >> "$log"
        echo "0" > "$counter"
        exit
    fi
    echo "$try_nr" > "$counter"
    echo "Переходим к перезапуску подключения." >> "$log"

    # Перезапуск подключения: дёргаем физический WAN, pppd сам переподключится
    ifconfig "$ConnInterface" down
    sleep 1
    ifconfig "$ConnInterface" up
else
    # Сброс счётчика и сохранение белого IP
    echo "0" > "$counter"
    echo "Сброс счётчика" >> "$log"
    [ -f "$previp" ] || echo "0.0.0.0" > "$previp"
    _previp=$(cat "$previp")
    if [ "$_previp" != "$address" ]; then
        echo "$_previp и $address" >> "$log"
        echo "$address" > "$previp"
        echo "Сохранение нового ip" >> "$log"
    fi
fi
 

Опубликовано

факт, что проще, но если где-то забанят по ip или нужно будет его сменить по какой-либо причине - то это будет гемор.

Опубликовано
3 часа назад, gonzzo сказал:

факт, что проще, но если где-то забанят по ip или нужно будет его сменить по какой-либо причине - то это будет гемор.

Отменил услугу, подключил заново) по крайней мере у МТСа каждый раз разный адрес выдаётся 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   1 пользователь онлайн

×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.