В целом он есть
Взято из телеграмма - Инкогнито
Взято из телеграмма - Инкогнито
Откатите пожалуйста все на 2013 год. Ну пожалуйста! Надеюсь бекапы остались у вас!
Бэкапы часто начинают только после похожих залетов.
В бытность работы сисадмина, приходила сотрудница - записали фотки на компакт-диски, удалили исходники, а они читаться не хотят.
Причем хитро, на некоторых приводах вообще, на некоторых что-то считывалось.
Часть удалось восстановить, обращалась ли ещё к кому - хз.
Облако, локальный и нормальное внешнее сетевое хранилище (nas) спасет данные.
Последнее время задумываюсь взять второй и настроить между ними синхронизацию
Ну или привет импортозамещение?
Сегодня в большей степени технический пост про автобэкапы Huawei (AR6120 и S5735). Но я буду разбавлять текст художественными вставками.
Почему не rancid? Все, мне кажется, задают этот вопрос в любом посте про автобэкапы. Во-первых, что-то я быстрым поиском не нашла там поддержку Huawei нужных моделей, во-вторых я хочу прям классический файл бэкапа, который можно раскатать (а rancid снимает вывод консоли, что не одно и то же), в-третьих я хочу гибкий инструмент, которым я смогу позже, например, раскатать всем правило в access-list или выполнить любую команду.
Ну и вообще, я хочу понимать как оно работает, а не использовать сторонний софт, но это уже мои загоны.
Итак, нужно логиниться на Huawei, желательно, по ssh ключу (чтоб не палить пароли в скриптах), выполнять сохранение конфигурации с определенным именем, потом заливать по tftp на сервер тоже с определенным именем, анализировать что слилось, а что нет, коммитить в git и отсылать отчет на почту.
Надо сказать, что энтерпрайзные huawei умеют, как циски, при сохранении конфигурации автоматом отсылать на ftp конфиг. Теоретически, младшие модели это тоже умеют, но практически это нихрена не работает во-первых, а во-вторых оно сливает только zip архив, что просто адски неудобно (про это будет подробнее ниже).
Единственное, что я пропущу - это настройка git. Я подняла gitea чудесно по родной инструкции, справится любой. Да и система контроля версий тут не строго обязательна в принципе.
Первое - логин на Huawei по ssh ключу. И сразу это ввергло меня в поиск. То есть, в документации такая фича есть, но ключ он принимает только в HEX виде и никакие популярные команды преобразования, которые на раз гуглятся, не привели ключ в тот вид, чтобы его сожрал Huawei.
Сначала генерируем ключ на сервере (у меня хуавей принял только 1024 бита, но поскольку ssh открыт только с белого списка адресов, я сочла это приемлемым. вы же можете поэкспериментировать с битностью). На вопрос о парольной фразе просто нажмите enter.
ssh-keygen -f ~/.ssh/id_rsa -t rsa -b 1024
А теперь делаем магию. Я нашла нужную команду в самом конце комментов под заплюсованным ответом на stackoverflow. Команда из заплючованного ответа не работала и кто-то скромно написал, что не работает, но вот для моего хуавея делаю вот так и работает, тысяча плюсов в карму этому господину.
ssh-keygen -e -m pem -f ~/.ssh/id_rsa.pub | sed '1d;$d' | tr -d '\n' | base64 -d | xxd -c 24 -g 4 -u | sed -e "s/^.*: //" -e "s/.\{25\}$//g"
на выводе вы получите примерно вот такую простыню, нужно будет сохранить (не переживайте за меня, это тестовый ключ)
Дальше заводим ключ на Huawei. Ключ надо будет копировать в команды прямо так, как он вам вывелся на предыдущем этапе. На Huawei AR6120 команды следующие (если у вас белый список на логин по ssh не забудьте также разрешить ip вашего сервера логиниться):
Внимание, вот ссылка на весь код и команды текстом, я не изверг, просто пикабу не позволяет нормально вставлять код. В конце продублирую ссылку.
На коммутатор Huawei S5735 команда чуть-чуть отличается, есть по ссылке в конце.
Для обращения к устройствам из скрипта я завела БД на sqlite, но вы можете брать информацию из текстовых файлов или ещё откуда. Поле пароля в базе будет пустым, оно оставлено для устройств, которые не поддерживают логин по ключу (вдруг такие будут)
Структура базы:
Вставка происходит примерно так:
`insert into netdev (hostname,ip,login,pass,tag,model) values ( 'ufa-ar6120-2', '10.2.100.2','backuper','','huawei','AR6120');`
Теперь про скрипт. И на цисках, и на микротиках, и на D-Link прекрасно работала следующая схема:
На хуавее же логин при такой схеме происходит, в логах это видно, но никакие команды, переданные таким способом, не выполняются. Никакие манипуляции c -i -T -t не работают. Я закопалась в процессе в логи ssh, в переменные окружения и прочее. Примерно понятно, что открытый терминал не считается терминалом и это даже нормально, но никакие опции, которые туда должны впихать команды, не работают. Моего скилла победить эту конструкцию не хватило. Пришлось использовать expect.
Кстати, если кто может нормально описать почему оно не работает и как это побеждать - будет здорово. А то я как собачка - вроде частично понимаю, а нормально написать не могу.
Всего использоваться будут 5 скриптов (напомню, код текстом по ссылке в конце).
Первый скрипт разбирает базу и запускает бэкап для каждого устройства в параллель.
Сначала у меня был один скрипт expect на все устройства (команды то одинаковые), но на коммутаторах он в 20% случаев не успевал с первой командой, так как на них очень-очень долгая загрузка после логина. А на роутерах наоборот, он завершался, не успев получить вывод от tftp и завершал сессию. Пришлось расставить костыли в виде sleep и разделить на два скрипта.
Для роутеров вот, для коммутаторов по ссылке в конце.
У Huawei и cisco немного по-разному сделан текущий конфиг.
Текущий конфиг (аналог running-config) по команде save сохраняется на Huawei в vrpcfg.zip. Как уже писалось выше, при попытке сохранять это по tftp/ftp это падает всегда zip архивом и при распаковке у конфига внутри архива всегда одно и тоже имя. То есть, на такие автоматические бэкапы всё равно надо накручивать скрипт распаковки и переименования. НО! Конфиг можно сохранить в текстовом виде с любым именем .cfg и уже его сливать.
Если вам нужно добавить дату - можно добавить её в имя конфига, который будет падать по tftp (чтоб на роутере память не занимать - там всегда сохраняем с одинаковым именем). Я не добавляю дату, так как всё падает в git, там версионность поддерживается и так.
Далее идет скрипт для оценки того, что у нас накопировалось - хочется понимать, что успешно, что нет. А также коммит, пуш и отсылка отчета на почту.
Зачем каждый раз выбирать ключ ssh? Huawei сожрал только 1024 бита, а gitea хотела минимум 2048. Так что пришлось завести два и менять - один для логина, другой для коммитов.
Теперь сам анализатор логов analyse_result. Он простой как валенок, тут ваша фантазия может разгуляться. Я просто смотрю что написано success на сохранении и на копировании. Заметьте, у роутеров и коммутаторов строчки вывода разные.
Я в таких вспомогательных скриптах придерживаюсь понятного стиля написания, не гоняясь за умещением всего в одну строчку (чтоб потом вспомнить, что там вообще было), так что стиль такой не просто так)
Ну и пихаем в cron чтоб выполнялся каждый день:
Изменения в Gitea выглядят примерно вот так
Сколько времени на это ушло? Ну вот столько:
9 дней работы от 30 минут до 3х часов в день или 19 коммитов. Больше всего я боролась с логином по ключу и с удаленным выполнением команд.
Осталось раскатать это на 260 устройств :) Потом можно что угодно раскатывать сразу на все, используя эти наработки. Например, в планах составить рамочный access-list (он как бы есть, но слишком пошли различия от филиала к филиалу, хочется причесать). Ну а пока - залогиниться на каждое устройство ручками и вписать пользователя с ключом.
Занималась я этим чтобы немного размять мозги и проветриться от бумажек с отчетами, что с успехом достигнуто. Ну и для рабочей пользы.
Понятное дело, сейчас Huawei такого типа (малый офис, скажем так) не очень распространены в РФ. Уже не домашний роутер, ещё не энтерпрайз. Однако, он завозится активно, а материалов хрен да нихрена. Надеюсь, кому-то когда-то пригодится.
На старой Windows 7 не работает теневое копирование томов и всё с этим связанное. Все копипастные решения были опробованы, пока в глубинах форумов не наткнулся на то, что в системе отсутствует сверхважный файл. После попытки восстановления его по непосредственной инструкции - небольшое изменение, теперь ошибка выходит не сразу, но не более. Можно было бы последовать дальше по инструкции, но с имеющимся опытом она в большей своей части просто эльфийский (ссылка на форум с решением в конце поста).
На новом жестком диске в процессе и после установки Windows 10 экран целиком в артефактах, из-за которых текст почти не читаем. Видеокарта говорит об ошибке под кодом 43, однако все попытки установить драйвера ни к чему не привели - Windows либо делает вид, что их нет, либо сразу после их обнаружения (посредством поиска в панели управления) и перезагрузки ничего не меняет (так же не видит). CCleaner с чисткой реестра уже применялся, равно как и попытка установки через Driverhub. Вариант с "более старой версией" не прокатывает, ибо установщик Nvidia, как я понял, всегда берет последнюю версию.
Предыстория: заглючил ПК, сначала картинка, затем звук, после чего тот выключился и не смог сразу распознать жесткий диск. Сразу же был куплен новый жесткий диск (имеется опыт полной потери диска). Попытка клонирования посредством сторонних программ к результатам не привела, как и попытка клонирования посредством резервного копирования.
Старая - Windows 7 x64 Домашняя базовая
Новая - Windows 10 x64 Домашняя
Видеокарта - Nvidia GeForce GTS 450
Дополнительная информация при необходимости
Здравствуйте, IT сообщество!
Прошу поделится своим опытом по решению довольно тривиальной задачи, а именно - копирование бэкапов с основного сервера на бэкапный.
Схема такова: имеется win сервер 2012R2, который ежедневно бэкапит базы 1с и всякие другие нужные папки с диска C: на диск D:
При этом "все яйца хранятся в одной корзине", и, чтобы этого избежать, появляется бэкапный сервер с большим диском на том же 2012R2
Оба сервера соседи, находятся в датацентре, соединяются между собой...
а вот тут начинаются варианты:
- либо через роутер микротик RB2011UiAS-RM по гигабитным портам, которые в режиме свитча
- либо напрямую между собой, через вторую сетевуху основного сервера кроссовером в бэкапный
микротик особо не загружен, но ежедневный бэкап около 150 Гб
закачку должен инициировать бэкапный сервер, отсюда второй вопрос, как и чем лучше всё это реализовать? например:
- через ftp, который есть на основном
- через расшаренную папку (вот так совсем не хочется, ибо нужна максимальная защищённость бэкапного сервера от основного, чтобы не пролезли всякие зловреды)
- через что ещё можно? без шифрования передачи, нужна максимальная скорость, но так, чтобы при заражении основного чем-нибудь плохим, бэкапный выжил бы
Сколько работал сисадмином, вечно люди теряли свои документы либо жаловались, что сохранялись, но вот бы вернуться обратно и вернуть те данные, которые я "затёрла". Вот где взять предыдущую копию документа?
Ну не проблема думаю я, сейчас мы быстренько из теневых копий вытащим, а там фиг, они черте-когда сделаны, да и забыть легко, хоть засохраняйся. А ещё парк компов как обычно древний, не из-за того, что денег у фирмы нет, сами-то компы по конфигурациям хорошие, но приложения есть такие, что им только, например, Windows XP подавай, ладно бы хоть Windows 7.
И тут натыкаюсь на эту программу:
Программа мониторит изменения в папке Документы и при любом изменении файла, тут же делает его копию. Программа сохраняет все версии всех файлов (или указанных Вами) из папки Документы, таким образом Вы можете вернуться к предыдущей версии любого файла одним щелчком мыши и пересохранить его, если потребуется.
Одним кликом мыши Вы можете сделать копию папки Документы на текущую дату. Папку для версий файлов Вы можете задать самостоятельно.
Для удобства выбора, имеется возможность указать расширения файлов, какие файлы считать документами, а какие изображениями, а также можно указать копии каких файлов не делать. Кроме того, можно делать версии не только всех файлов в папке документы, а только тех, которые Вы указали в качестве документов или изображений. В любой момент Вы можете удалить любые ранее сделанные версии файлов.
В случае использования многими пользователями общей папки (указанной Вами в настройках) для хранения версий файлов папки Документы, список версий можно обновить вручную, если он не обновился автоматически.
Программа тестировалась и усовершенствовалась на операционных системах Windows XP SP3, Windows Vista, Windows 8, Windows 8.1, Windows 10, Windows 11, а также соответствующих им серверных версиях, показала себя с лучшей стороны и не вызывает нареканий.
Системные требования:
- Windows XP SP3 (домашняя редакция не поддерживается из-за .NET Framework 4.0) и выше
- Windows Server 2003 SP2 и выше
Загрузить установочный файл (размер: 0,5 МБ): setup_eclatsoftversidoc_1.1.zip
Загрузить установочный файл (включает в себя библиотеку .NET Framework 4.0, размер: 50,3 МБ) можно по ссылке: http://dl.eclatsoft.ru/files/setup_eclatsoftversidoc_1.1_dot4.zip
Отчёт VirusTotal: https://www.virustotal.com/gui/file/14054e3daeb597aa371aacffc66cbb06da574bbb111d0616cdb7a8bfdbbdc06b/detection
Ограничения данной версии: Версии любых файлов старше 7 дней автоматически удаляются, файлы в папке Документы затронуты не будут.