Jump to content

gvan

Forum Members
  • Posts

    210
  • Joined

  • Days Won

    2

Posts posted by gvan

  1. В веб-интерфейсе самого кинетика (Keenetic Giga II) объемы дисков отображаются нормально:

    Скрытый текст

    disks.png.3b6052d2694b8d33b62be6c9435aa5cf.png

    Но если запросить эти же данные через SNMP, то видим, что значения отрицательные

    snmpwalk -c public 192.168.1.1 . > snmpwalk.txt:

    Скрытый текст

    ...

    UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1
    UCD-SNMP-MIB::dskIndex.2 = INTEGER: 2
    UCD-SNMP-MIB::dskIndex.3 = INTEGER: 3
    UCD-SNMP-MIB::dskIndex.4 = INTEGER: 4
    UCD-SNMP-MIB::dskPath.1 = STRING: /tmp/mnt/ADATA2/
    UCD-SNMP-MIB::dskPath.2 = STRING: /tmp/mnt/c06bcc2a-e381-4443-887e-6abbf2b688b2/
    UCD-SNMP-MIB::dskPath.3 = STRING: /tmp/mnt/ADATA/
    UCD-SNMP-MIB::dskPath.4 = STRING: /tmp/mnt/facbe326-99b1-d101-f0c8-e32699b1d101/
    UCD-SNMP-MIB::dskTotal.1 = INTEGER: -1411806976
    UCD-SNMP-MIB::dskTotal.2 = INTEGER: -1411806976

    UCD-SNMP-MIB::dskTotal.3 = INTEGER: 946167104
    UCD-SNMP-MIB::dskTotal.4 = INTEGER: 946167104
    UCD-SNMP-MIB::dskAvail.1 = INTEGER: -2091164928
    UCD-SNMP-MIB::dskAvail.2 = INTEGER: -2091164928

    UCD-SNMP-MIB::dskAvail.3 = INTEGER: 267273440
    UCD-SNMP-MIB::dskAvail.4 = INTEGER: 267273440
    UCD-SNMP-MIB::dskUsed.1 = INTEGER: 679357824
    UCD-SNMP-MIB::dskUsed.2 = INTEGER: 679357824
    UCD-SNMP-MIB::dskUsed.3 = INTEGER: 678893696
    UCD-SNMP-MIB::dskUsed.4 = INTEGER: 678893696
    ...

    Возможно это связано с переполнением 32-битных счетчиков.

    Использую SNMP для графического отображения статистики роутера (в т.ч. и подключенных дисков). Соответственно, для имеющегося диска на 3ТБ статистика отрисовывается некорректно (для диска на 1ТБ - проблема не фиксируется).

  2. В 14.04.2022 в 18:08, usan сказал:

    Спасибо за скрипт

    Только установил Entware, и при выполнении скрипта вылезли ошибки:

    ndmq: not found

    Как выяснилось, пакет ndmq перенесен в архив и больше не входит в установку Entware, чтобы не устанавливать его из архива, я переделал скрипт на rci, изменения в строках 75, 104-105

    Предварительно нужно установить пакет jq для разбора json

    opkg install jq

    Скрипт во вложении в архиве

    backup_rci.zip 1 \u041a\u0431 · 31 downloads

    Спасибо. Сам переустановил entware с нуля и тоже увидел, что пакт ndmq исчез.

    Для тех, кто не захочет переходить на rci, можно установить ndmq из архива (у меня просто еще были скрипты на него завязаны):

    opkg install curl
    curl https://bin.entware.net/mipselsf-k3.4/keenetic/archive/libndm_1.8.0-1_mipsel-3.4_kn.ipk >libndm.ipk
    opkg install libndm.ipk
    curl https://bin.entware.net/mipselsf-k3.4/keenetic/archive/ndmq_1.0.2-7_mipsel-3.4_kn.ipk > ndmq.ipk
    opkg install ndmq.ipk

     

    • Thanks 1
  3. 58 минут назад, batonskij сказал:

    папка bin присутствует, после окончания процесса она зачеркивается. 

    Я не знаю, что для морды означает зачеркнуто. 

    Больше пользы было бы от вывода команды ls, где видны права на уже распакованную папку bin. Возможно по какой-то причине они не проставляются должным образом. 

  4. В 29.04.2022 в 22:03, batonskij сказал:

    Воспользовался вашим советом, использовал tar, но при восстановлении все-равно что-то идет не так

    Можно почитать в инете мануал по tar и перед распаковкой проверить содержимое архива. Например, список файлов сохранить в текстовый файл и посмотреть есть ли в нем все необходимое. Или вообще через менеджер файлов midnight commander войти внутрь архива (будет очень долгий процесс) и "походить" по структуре каталалогов-файлов.

    Да и смоневаюсь я, что при распаковке архива tar-ом у вас не высветилось ни одной ошибки, если "что-то идет не так".

  5. В 26.04.2022 в 16:43, batonskij сказал:

    нет, речь идет о штатном установщике OPKG пакетов

    Но тогда это вообще мимо кассы. Фактически создаваемый скриптом архив не является пакетом OPKG. Каким образом архив обрабатывает бинарник opkg, и почему на архивах малого размера это срабатывало, мне неизвестно.

    Соответственно, как и писал выше, для распаковки архива нужно использовать команду tar.

    • Thanks 1
  6. 5 часов назад, batonskij сказал:

    Жму кнопки в веб морде роутера и жду, обычно все в течении 4-5 мин разворачивается.

    Мне добавить к предыдущему сообщению нечего. Видимо, вопрос нужно задать веб-морде и кнопкам😄

    Я сам, когда пробовал восстанавливать архив, для распаковки использовал команду tar, как указано в инструкции на первой странице.

    Про функционал в веб-морды, в котором это можно сделать, мне ничего неизвестно. Возможно речь идет о "Приложение-Файлы и папки"? Но тогда вопрос больше к разработчикам прошивки. 

    Полагаю, что при включении HA в архив его размер становится больше, и для обработки архива функционалом самой прошивки не хватает памяти.

  7. В 23.04.2022 в 20:18, batonskij сказал:

    Скриптом пользуюсь давно, все устраивало, но недавно заметил что невозможно восстановить при наличии в архиве Home Assistant. Что надо подправить? 

    Недостаточно информации. Сам бэкап отрабатыает задачу и ошибок нет? Что значит невозможно восстановить? Какая ошибка возникает?

  8. Вы так и не показали свой скрипт. Или хотя бы чему у вас равна переменная $BACSTORDIR. 

    У меня именно такой скрипт, как я привел в примере. Предварительный переход в каталог команде find мешать никак не может. Да, наверно можно обойтись и без него. 

  9. Попробуйте, заменив переменные пути и времени хранения файлов реальными значениями, выполнить команду find из командной строки. Только уберите кавычки. Как выглядит команда в командной строке, и что выводится при ее выполнении?

    Если понятнее не станет, выложите свой скрипт сюда. 

  10. 14 часа назад, ale_xb сказал:

    Хочу понять, зачем ставить cron из entaware? Разве crond из состава прошивки/busybox не достаточно для этого?

    В первом сообщение есть примечание по cron (на момент написания сообщения). Если все устраивает и работает (задачи из crontab выполняются) с существующим cron, то необходимости в установке нет.

  11. 16 часов назад, Meccep45 сказал:

    при отладке вроде без ошибок

    Т.е.при ручном запуске/отладке вертит правильно (при достижении нужных критериев), но по крону не отрабатывает? Могу предположить, что нужно в основном файле crontab убрать комментарий для разрешения запуска почасовых задач (в первом сообщении темы об этом есть информация). А скрипт /opt/etc/cron.daily/logrotate просто также скопировать в cron.hourly (test.sh по сути не нужен).

  12. 10 минут назад, roma33region сказал:

    подскажите как сделать чтоб сохранение бекампа было например на гугл диск

    В рамках данного решения (скрипта) этого не предусмотрено. Посмотрите каталог готовых решений для opkg. Возможно, что-то найдете для копирования (переноса) данных на облачные сервисы. Например, упоминается rclone.

    Соответственно, если получится его настроить, то в конец скрипта добавите необходимые строки для синхронизации локального каталога с бэкапами на облако.

  13. В 29.01.2021 в 11:50, Le ecureuil сказал:

    Ну как, на 10-й версии стало лучше?

    Ну, у меня проблемы с установкой не было, поскольку стояла версия 2.16.D.7.0-1, а обновляться выше в свое время я не стал (когда увидел, что на Giga 2, у некоторых после 8 версии начались проблемы с кирпичами).

    Как вышла 10 обновился успешно, правда только со второго раза. Первый раз после обновления осталась та же самая версия. Повторная установка 10 прошла нормально. 10-01 с первого раза без проблем поставилась.

  14. 9 часов назад, Equalizer сказал:

    Коллеги, добрый день.

    Ситуация следующая: имеем Keenetic Giga 2. С обновлениями до 2.16.D.8.0-0 проблем не было. 2.16.D.8.0-2 уронило систему и загнало роутер в бутлуп, восстановил прошивку с помощью рекавери. Думал, какой-то глюк. Благо, бэкапы наше всё. Вышло обновление 2.16.D.9.0-0, ситуация повторилась с небольшой разницей - роутер бесконечно моргает индикатором питания, после hard reset загорается лишь питание, порт 0 (от провайдера) и 1, куда воткнут шнур от компа. Опять же, вернуть к жизни помогает лишь рекавери и заливка 2.16.D.8.0-0 из бэкапа. В чём может быть проблема, у кого какие идеи?

    Вот еще здесь посмотрите. Аналогичная проблема была у людей как с подключенным модемом, так и без него. 

    У самого Giga 2. Но почитав всё это, решил, что мне хорошо и на 2.16.D.7.0-1. Решил пока не обновляться.

  15. 12 часа назад, batonskij сказал:

    Камрады подскажите почему скрипт бэкапит прошивку и конфиг странно? Конфиг в архиве и без и файл прошивки под разными именами.  

    Достаточно было почитать предыдущие сообщения. Комрады хотели (просили), чтобы предыдущие файлы прошивки не удалялись, а именовались по номеру прошивки и оставались на диске. Но по коду скрипта сама прошивка в архив вообще не кладется. Непонятно, почему у вас так происходит.

    Что касается конфига, то его последняя версия кладется в файл  -cur. Если были изменения от текущего его содержимого (а у вас, наверное, конфиг изменялся), старая версия конфига как раз перемещается в архив с датой.

    Не исключаю, что где-то в скрипте есть баг и нарушена логика именования файлов. У меня например вот такое текущее содержимое каталога с бэкапами (конфиг давно не менялся):

    Скрытый текст

    -rw-r--r--    1 root     root         12710 Oct 29 04:11 config-cur
    -rw-r--r--    1 root     root      61940493 Oct 17 04:11 entware-2020-10-17.tgz
    -rw-r--r--    1 root     root      61905163 Oct 18 04:11 entware-2020-10-18.tgz
    -rw-r--r--    1 root     root      61900733 Oct 19 04:11 entware-2020-10-19.tgz
    -rw-r--r--    1 root     root      62372808 Oct 20 04:11 entware-2020-10-20.tgz
    -rw-r--r--    1 root     root      62372381 Oct 21 04:11 entware-2020-10-21.tgz
    -rw-r--r--    1 root     root      62364753 Oct 22 04:11 entware-2020-10-22.tgz
    -rw-r--r--    1 root     root      62357246 Oct 23 04:12 entware-2020-10-23.tgz
    -rw-r--r--    1 root     root      61511681 Oct 24 04:11 entware-2020-10-24.tgz
    -rw-r--r--    1 root     root      61622223 Oct 25 04:11 entware-2020-10-25.tgz
    -rw-r--r--    1 root     root      61732790 Oct 26 04:11 entware-2020-10-26.tgz
    -rw-r--r--    1 root     root      61726866 Oct 27 04:11 entware-2020-10-27.tgz
    -rw-r--r--    1 root     root      61719782 Oct 28 04:11 entware-2020-10-28.tgz
    -rw-r--r--    1 root     root      61741802 Oct 29 04:11 entware-2020-10-29.tgz
    -rw-r--r--    1 root     root      12648508 Oct 22 04:11 firmware-2.16.D.6.0-1
    -rw-r--r--    1 root     root      12648508 Oct 28 04:11 firmware-2.16.D.7.0-0
    -rw-r--r--    1 root     root      12648508 Oct 29 04:12 firmware-2.16.D.7.0-1
    -rw-r--r--    1 root     root      12648508 Oct 23 04:12 firmware-2020-10-23
    -rw-r--r--    1 root     root      12648508 Oct 29 04:12 firmware-2020-10-29

    На всякий случай выкладываю полный код скрипта последней версии (в первом собщении изменить уже не могу):

    Скрытый текст
    
    #!/opt/bin/sh
    
    # VERSION 2.1
    
    # Скрипт сохраняет резервную копию entware, конфига роутера и прошивки
    
    prefix="/opt"
    PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
    
    #=====================================================================================
    # Конфигурационные параметры скрипта
    #=====================================================================================
    # Префикс для записи сообщений в syslog
    TAG=Backup
    
    # Каталог, куда сохранять бэкапы
    BACSTORDIR=/tmp/mnt/ADATA/backup/
    
    # Какие компоненты бэкапить (1|0)
    # Entware. Всегда сохраняется новая копия
    IsEnt=1
    # Конфигурация роутера. Сохраняется копия, если были изменения в конфиге
    IsConf=1
    # Прошивка. Создается резервная копия, если прошивка изменялась
    IsFirm=1
    
    # Префикс для имени файла с бэкапом
    BACNAME=entware
    
    # Что архивировать
    BACDIR=/opt/
    
    # Какие каталоги пропускать при бэкапе entware
    EXCLUDE="
    tmp
    var/log
    share/nginx/html
    var/mysql
    "
    
    # При определении изменялся ли конфиг, не учитывать данные строки (через экраннированн[Kсимвол "Иm{И" -> "\|".
    # При сравнении копий конфига не учитываются служебные строки, начинающиеся на '! $$$', и с
    трока 'clock date', т.к. она обновляется при считывании конфига
    # m{учше не трогать :)
    EXCLCONFCMD='\! \$\$\$\|clock date'
    
    # Путь к резервной копии прошивки на USB FLASH. Определить в CLI по команде 'ls ?'. Обычно это мет
    ка диска в виде 'LABEL:/'
    BACFIRMDIR=ADATA:/backup/
    
    # Сколько дней хранить бэкапы.
    DAYSTOR=12
    
    #=====================================================================================
    # Начало скрипта
    #=====================================================================================
    # Текущая дата для формирования имени файла с архивом
    DATE=`date +%Y-%m-%d`
    
    logger -t $TAG "Starting process"
    cd $BACDIR
    
    # Делаем архив entware
    if [ "$IsEnt" = "1" ]
        then
            logger -t $TAG "Starting backup entware"
            echo "$EXCLUDE" | tar -X - -cf - * | gzip > ${BACSTORDIR}${BACNAME}-${DATE}.tgz
        else
            logger -t $TAG "Skiping backup entware"
    fi
    
    # Делаем архив конфига
    if [ "$IsConf" = "1" ]
        then
            logger -t $TAG "Starting backup config"
            ndmq -p "show running-config" -P message > ${BACSTORDIR}config-${DATE}
            if [ -f "${BACSTORDIR}config-cur" ]
                then
                    OLDCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-cur`
                    CURCONF=`grep -v "${EXCLCONFCMD}" ${BACSTORDIR}config-${DATE}`
                    if [ "$OLDCONF" != "$CURCONF" ]
                        then
                            logger -t $TAG "Config is changed. Do new copy."
                            cp -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur-new
                            mv -f ${BACSTORDIR}config-cur ${BACSTORDIR}config-${DATE}
                            gzip -f ${BACSTORDIR}config-${DATE}
                            mv ${BACSTORDIR}config-cur-new ${BACSTORDIR}config-cur
                        else
                            logger -t $TAG "Config is not changed. Renew current config copy."
                            mv -f ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                    fi
                else
                    logger -t $TAG "Current config copy not found. Is it first run? Do config copy."
                    cp ${BACSTORDIR}config-${DATE} ${BACSTORDIR}config-cur
                    gzip -f ${BACSTORDIR}config-${DATE}
            fi
        else
            logger -t $TAG "Skiping backup config"
    fi
    # Делаем архив прошивки
    if [ "$IsFirm" = "1" ]
        then
            logger -t $TAG "Starting backup firmware"
            REL=`ndmq -p 'show version' -P 'release'`
            ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message
            if [ -f "${BACSTORDIR}firmware-$REL" ]
                then
                    CMPFIRM=`cmp ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}`
                    if [ -n "$CMPFIRM" ]
                        then
                            logger -t $TAG "Firmware is changed. Do new copy."
                            cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL-new
                            mv -f ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}
                            mv ${BACSTORDIR}firmware-$REL-new ${BACSTORDIR}firmware-$REL
                        else
                            logger -t $TAG "Firmware is not changed. Renew current firmware copy."
                            mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
                    fi
                else
                    logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy."
                    cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
            fi
        else
            logger -t $TAG "Skiping backup firmware"
    fi
    
    logger -t $TAG "Finished"
    cd $BACSTORDIR
    
    # Выводим в лог список удаленных файлов-архивов
    logger -t $TAG "Remove old archives"
    FILES=`find $BACSTORDIR -mtime +${DAYSTOR} -print -delete`
    logger -t $TAG "Removed: $FILES"
    logger -t $TAG "Exiting"

     

    Можно переместить текущее содержимое бэкапов в другой каталог и проверить функционал по новой.

    • Thanks 1
  16. 21 час назад, Orbit сказал:
    
    find $BACSTORDIR -mtime +${DAYSTOR} -delete

    А здесь поправить, чтоб файлы типа   firmware-3.05.A.18.0-0 и тп вообще не удалялись.

    Тоже несложно. Достаточно мануал на команду find посмотреть. Выглядететь будет примерно так:

    find $BACSTORDIR -mtime +${DAYSTOR} -a ! -name 'firmware*' -delete

     

    • Thanks 1
  17. 17 часов назад, Orbit сказал:

    есть ли возможность сохранять прошивку с версией в названии файла, как это сейчас происходит при сохранении через веб?.

    Это не сложно. Можно заменить блок кода в скрипте, где делается бэкап прошивки на код следующего вида:

    Скрытый текст
    
    # Делаем архив прошивки
    if [ "$IsFirm" = "1" ]
        then
            logger -t $TAG "Starting backup firmware"
            REL=`ndmq -p 'show version' -P 'release'`
            ndmq -p "copy flash:/firmware ${BACFIRMDIR}firmware-${DATE}" -P message
            if [ -f "${BACSTORDIR}firmware-$REL" ]
                then
                    CMPFIRM=`cmp ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}`
                    if [ -n "$CMPFIRM" ]
                        then
                            logger -t $TAG "Firmware is changed. Do new copy."
                            cp -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL-new
                            mv -f ${BACSTORDIR}firmware-$REL ${BACSTORDIR}firmware-${DATE}
                            mv ${BACSTORDIR}firmware-$REL-new ${BACSTORDIR}firmware-$REL
                        else
                            logger -t $TAG "Firmware is not changed. Renew current firmware copy."
                            mv -f ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
                    fi
                else
                    logger -t $TAG "Current firmware copy not found. Is it first run? Do firmware copy."
                    cp ${BACSTORDIR}firmware-${DATE} ${BACSTORDIR}firmware-$REL
            fi
        else
            logger -t $TAG "Skiping backup firmware"
    fi

     

    Ключевой элемент здесь - получение номера версии прошивки: REL=`ndmq -p 'show version' -P 'release'`

    У себя код поменял. Вроде работает.

    Отредактировать первое сообщение уже не могу. Так что меняйте, проверяйте и у себя.

    • Thanks 2
  18. 2 часа назад, Le ecureuil сказал:

    Вроде бы исправляли эту ситуацию.

    Драйвер serial tty в 2.12 перевели на polling вместо прерываний (из-за особенностей работы en751x), но потом должно было все стать нормально.

    Нет, журнал изменений 2.13-2.15 читал регулярно. Упоминаний об исправлении не встречал. Проблема наблюдалась на всех версиях 2.13-2.16 (может, конечно, какие-то промежуточные версии и пропустил).

    Также подтверждается на версии 2.16 на двух других Keenetic Giga II (их использую не я).

  19. 4 минуты назад, r13 сказал:

    Думаю шанс нулевой, ибо на работу не влияет

    Я понимаю. На работу не влияет, но графики статистики LA безбожно врут 😉

    Уж очень хорошая и надежная "железка" получилась в виде Keenetic Giga II, которая верой и правдой служит уже несколько лет. Поэтому и хотелось окончательного фэншуя, т.к. в версии 2.12 LA работал, как и задумано.

    Но нет, так нет. Если исправляющую "затычку" для данного типа устройств сделать сложно, то значит не судьба...

  20. Баг тянется еще с версии 2.13. Судя по сообщениям в предыдущей теме, характерен только Keenetic Giga II и Keenetic II (устройства на 6856). На 2.16.D.0.0-0 также присутствует.

    Если смотреть загрузку Load Average (через SNMP или команду top в entware), то она всегда будет больше 1. Хотя, если при этом смотреть загрузку CPU (через веб-интерфейс или SNMP), то она будет околонулевая. Соответственно, и LA также должен быть невысоким (меньше 1). Но это не так.

    Насколько я понял, это фактически последний шанс исправить данный баг в прошивке 2.16 для снятых с поддержки устройств...

  21. 27 минут назад, Алексей Саратовский сказал:

    то есть должно одновременно всё быть: и обновление messages и ротация в той же папке, верно?

    И скажите, пожалуйста, именно по вашей теме - я всё верно сделал (скрин выше)?

    Ротация никакого отношения к обновлению логов не имеет. Ее задача правильно перенести/архивировать файлы журналов.

    На скрине выше вообще непонятно, что вы там настроили. 

    Повторюсь. Если у вас перестали обновляться логи, что ротация здесь не причем (за исключением уж совсем клинических случаев).

    Сначала разберитесь с обновлением логов и добейтесь того, чтобы данные в них писались. Удалите пакет logrotate и скрипт /opt/etc/cron.daily/logrotate, перезапустите роутер, проверьте данные.

×
×
  • Create New...