
AssGuard

Скрипт бэкапа конфигов с коммутаторов и отправка на почту по расписанию
Понадобилось как-то на работе организовать бэкап конфигов с свитчей и прочего сетевого оборудования, так чтобы делался он автоматически и с отправкой архива с конфигами на почту.
Варианты с использованием Kiwi Tools я отмел, ибо неудобно мне, решил поковырять Linux))
Остановился на простом варианте запуска по расписанию скрипта, который будет подключаться к свитчам по ssh или telnet, далее по команде копировать текущий конфиг на tftp-сервер, а оттуда уже отправлять его на почту.
Несмотря на то что есть несколько Linux-серверов, я решил взять для работы NAS WD MyCloud, который у нас используется как файловая помойка. Вот такой:
Замечателен он тем что в этой маленькой коробочке стоит неплохой процессор, Marvell Armada 375 (2x1GHz) или Mindspeed Comcerto C2200 (2x650MHz), в зависимости от ревизии, и объем ОЗУ 512MB Ram или 256 MB Ram, в зависимости от ревизии.
К примеру у нас GEN2, который имеет более быстрый процессор и больше ОЗУ.
И там внутри Linux, пусть и урезанный, но Linux. И есть в сети руководства как накатить туда полноценный Linux, например Debian, а далее что душа пожелает.
Я в свое время почитал эту тему на 4PDA и поставил туда Debian, а потом и OpenMediaVault.
Но вы можете использовать любой другой компьютер/устройство на Linux.
Суть сводится к тому что нужно доставить пару пакетов:
expect и tcl - для обработки команд свитчей, и mpak для отправки вложения на почту.
Также необходимо поставить tftp-сервер, к примеру в OpenMediaVault это делается в пару кликов.
Итак, мы их поставили, далее пишем скрипт backup_cisco.sh, с таким содержанием:
#!/bin/bash
#!/usr/bin/expect -f
expect -c 'spawn telnet 192.168.254.10;
expect "sername: "
send "admin\r"
expect "assword: "
send "P@$$W0Rd\r"
expect ">"
send "enable\r"
expect "assword: "
send "P@$$W0Rd\r"
expect "#"
send "copy running-config tftp://192.168.32.243/CME.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.254;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/Core.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.3;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/SW_2.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.4;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/SW_3.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn telnet 192.168.32.5;
expect "sername: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/Cisco_4948.cfg\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn ssh admin@192.168.254.11;
expect "assword: ";
send "P@$$W0Rd\r";
expect ">";
send "enable\r";
expect "assword:";
send "P@$$W0Rd\r";
expect "#";
send "copy running-config tftp://192.168.32.243/ASA.cfg\r\r\r\r";
expect "#";
send "exit\r"'
expect -c 'spawn ssh 192.168.3.5;
expect "ser: ";
send "admin\r";
expect "assword: ";
send "P@$$W0Rd\r";
expect ">";
send "transfer upload datatype config\r";
expect ">";
send "transfer upload serverip 192.168.32.243\r";
expect ">";
send "transfer upload filename WiFi.cfg\r";
expect ">";
send "transfer upload start\r";
expect "(y/N)";
send "y\r";
expect ">";
send "logo\r";
expect "(y/N)";
send "y\r'
sleep 4m
mv /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/tftproot/*.cfg /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
cd /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
tar -czf backup_cisco_`date +"%m-%d-%Y"`.tar.gz /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
mpack -s "CISCO Backup WD" /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/backup_cisco_`date +"%m-%d-%Y"`.tar.gz admin@krg.corpname.kz
rm -rf /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
Что делает скрипт:
1. Подключается к свитчу.
expect -c 'spawn telnet 192.168.254.10;
2. Авторизуется
expect "sername: "
send "admin\r"
expect "assword: "
send "P@$$W0Rd\r"
3. Переходит в привилегированный режим
expect ">"
send "enable\r"
expect "assword: "
send "P@$$W0Rd\r"
4. Передает команду копирования текущего конфига на tftp сервер.
expect "#"
send "copy running-config tftp://192.168.32.243/CME.cfg\r\r\r";
5. Отключается от свитча и переходит к следующему.
expect "#";
send "exit\r"'
За обработку ответа от свитча в скрипте отвечает как раз тот самый expect
Все свитчи разные, поэтому команды передачи конфига тоже разные.
Последние команды:
6. Пауза в 4 минуты чтобы убедиться что все конфиги слились.
sleep 4m
7. Перемещает все файлы с расширением *.cfg в отдельный каталог.
mv /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/tftproot/*.cfg /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
8. Переход в каталог с скопированными конфигами.
cd /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/
9. Архивация всех файлов с расширением *.cfg в архив с текущей датой в имени
tar -czf backup_cisco_`date +"%m-%d-%Y"`.tar.gz /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
10. Отправка файла вложением на почту админу на admin@krg.corpname.kz
mpack -s "CISCO Backup WD" /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/backup_cisco_`date +"%m-%d-%Y"`.tar.gz admin@krg.corpname.kz
11. Удаляет все конфиги, очищает папку:
rm -rf /srv/dev-disk-by-id-ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6EATLHD-part2/backups/cisco/*.cfg
Далее, в веб-интерфейсе OpenMediaVault настраиваем уведомления для работы с почтой, у нас почта идет через MS Office 365:
Далее добавляем скрипт в встроенный планировщик OpenMediaVault, к примеру у меня он срабатывает в 8.00 по пятницам:
И вот результат:
Следующий пост будет про мониторинг оборудования через Zabbix с оповещением в Telegram
Отправляем снимок с веб-камеры в Telegram при обнаружении движения
Вариант что сами потеряли или дали кому-то и забыли отпал - больше склонялись к варианту что кто-то их взял из других сотрудников.
Идея заключалась в том чтобы камера реагировала на движения, снимала короткое видео и слала снимок в группу в Telegram.
В итоге я это реализовал и решил написать инструкцию для тех кто тоже хочет подобное.
Сразу обозначим два момента:
1. Инструкция адаптирована для варианта когда веб-камера находится физически в одном месте, а сервер - в другом, тогда нужно транслировать поток по сети.
Если у вас и камера и серверная часть будет на одном компьютере или камера изначально сетевая - можно обойтись без пунктов 1 и 2, а сразу перейти к пункту 3.
2. Подразумевается что у вас уже есть свой бот для Telegram, если нет, то вот инструкция: шаг 1 и 2
Итак, собственно сама инструкция:
1. Подключаем к компьютеру веб-камеру.
2. Устанавливаем на комп YawCam и настраиваем YawCam так:
3. Ставим на другой компьютер/сервер iSpy, добавляем камеру в качестве источника указываем MJPEG
4. Далее указываем маску детектора движения, в данном случае это дверь кабинета
5. На следующей вкладке указываем тревоги и действие которое будет обрабатываться при срабатывании тревоги
6. Указываем запись при срабатывании движения:
7. Указываем сохранять снимок с камеры в папку – далее этот снимок будет отсылаться в Telegram
8. Для того чтобы сервер не слал фото в Telegram при каждом срабатывании тревоги (открытия двери) – настраиваем расписание так чтобы оно срабатывало только до начала рабочего дня и после окончания рабочего дня, когда кабинет закрыт и никто посторонний заходить не может.
При этом запись видео и снимков все равно будет производиться при каждом срабатывании, но слаться в Telegram не будет.
9. Указываем место сохранения файлов.
10. Итог выглядит так:
11. Самое главное: скрипт отсылки снимка в Telegram.
По какой-то непонятной причине отправка фото в Telegram не срабатывает из PowerShell, приходится использовать curl:
https://chocolatey.org/packages/curl
https://winampplugins.co.uk/curl/
Используем такой скрипт:
pushd e:\Video\IT\video\IT\grabs\
for /f "tokens=*" %%a in ('dir /b /od') do set newest=%%a
popd
set bottoken="ТОКЕН_БОТА"
set chat="ЧАТ_ГРУППЫ"
set File="e:\Video\IT\video\IT\grabs\%newest%"
"c:\Program Files\curl-7.60.0-win64-mingw\bin\curl.exe" -s -X POST "https://api.telegram.org/bot%bottoken%/sendPhoto?chat_id=%25..." -F photo="@%File%" -F caption="Motion detected on IT-room!"
Где:
1. e:\Video\IT\video\IT\grabs\ - путь до снимков с камеры, которые делаются в момент срабатывания тревоги.
2. %newest% - имя самого последнего снимка с камеры, непосредственно в момент срабатывания тревоги, берется первыми тремя строчками скрипта.
3. bottoken – это токен вашего бота Telegram.
4. chat – это ID вашей группы в Telegram, если есть знак «-» то это группа, без знака «-» это ID пользователя, т.е. шлем либо в личку либо в группу.
5. %File% - переменная путь+имя файла снимка, которые и отправляются в Telegram последней командой в скрипте.
12. Итоговый результат:
Канал pikahranitel в Telegram заблокирован за распространение порнографии
Канал pikahranitel в Telegram заблокирован за распространение порнографии.
@pikahranitel, как быть?
Заводской брак телефона у телефона заказаного на Aliexpress. Что делать?
Добрый вечер, друзья пикабушники!
Месяц назад купил на Aliexpress смартфон ZTE Nubia Z11 Mini S черного цвеа.
Смартфон очень понравился, он очень мощный, стильный и удобный, а камера вообще выше всяких похвал!
Но, к сожалению, несколько дней назад случилась неприятность - внезапно сгорел дисплей.
Почитав соответствующий топик на форуме 4pda.ru и проконсультировавшись с специалистами сервисных центров я выяснил что это заводской брак.
Причем проявляется он только на тех смартфонах, на которых стоит дисплей марки JDI.
С дисплеями марки BOE, как правило, такого не происходит.
Смартфоны Nubia у нас в Казахстане не распространены и запчастей нет, тем более оригинальных.
На Aliexpress дисплеи в продаже есть, но не оригинальные и низкого качества.
Срок защиты истек, спор открыть не получается.
Написал неделю назад в чат техподдержки Aliexpress, оператор сказал что подал заявку на компенсацию, что спор не нужен и посоветовал обратиться в чат в среду чтобы узнать результат.
В среду обратился, оператор сказал что вопрос ещё решается и ответ я получу на почту, и посоветовал обратиться в чат в пятницу.
Сегодня оператор пообещал уточнить и выслать результат на почту.
Час назад получил письмо такого содержания:
Сейчас в системе показано, у этого заказа не заявки на компенсацию, соведую вам больше связить с продавцом, чтобы решить эту ситуацию )
Снова обратился в техподдержку, оператор сказала что подала апелляцию на возмещение и что ответ я получу только 13 февраля.
У меня сложилось впечатление что меня просто водят за нос и хрен я что получу.
В связи с чем вопрос: что делать, как получить хоть какую-то компенсацию?
Слышал про такую вещь как chargeback, возможно ли применить его тут?
Слышал что в России это работает если заказ закрыт, а товар не получен - надо написать заявление в банк, прикрепить скрин заказа, скрин трека и выписку с карты и деньги вернут.
Оплачивал с карты Kaspi Gold, можно ли оформить chargeback в случае если заказ закрыт, товар получил, но есть заводской брак и товар вышел из строя?
Помогите пристроить Лизу
Здравствуйте, друзья пикабушники.
Прошу помочь пристроить кошку Лизу.
Отдаю даром кошку, порода шотландская прямоухая.
Возраст 1 год 4 месяца.
Чистая, здоровая, чистоплотная, приучена к лотку, ест корм.
Не агрессивная, любит играть.
Отдам вместе со всеми аксессуарами - кормушки, лоток, наполнитель и корм.
Отдам потому что у меня аллергия, отдать некому, выкидывать не вариант.
г. Караганда.
Открыл спор на Aliexpress, а продавец дал новый трек
Добрый вечер, друзья пикабушники!
Прошу совета бывалых по спору на Aliexpress.
Ситуация такая: заказал товар, продавец дал трек почты Сингапура, посылку отправил 02.12.2017.
По идее все посылки которые идут к нам в Казахстан из Китая почтой Сингапура - доходят за 2-3 недели, при этом нормально трекается.
Тут же трек вообще не отслеживался, прошло почти 1,5 месяца.
Далее, недели две назад продавец продлевает срок защиты аж до 75 дней.
Я читаю отзывы, вижу что куча отзывов в духе "товар не пришёл, трек не отслеживался".
Понимаю что в моем случае тоже самое, открываю спор на возврат денег, пишу следующее:
"С момента отправки товара прошло почти 1,5 месяца, трек не отслеживается.
Обычно товары почтой Сингапура приходят к нам за 2-3 недели, а тут даже информации об отслеживании нет.
Судя по многим отзывам, многие так и не получили товар.
Скорее всего продавец их даже не отправлял."
Спустя пару дней продавец пишет мне сообщение в личке, типа "Отменяй спор, вот тебе новый трек", а в споре выносит предложение "0.0$ возврата, ждите товар, он уже на подходе".
Отказываюсь.
Сегодня продавец уже в споре пишет предложение "0.0$ возврата, вот новый трек".
Как быть?
Принимать или нет?
До обострения спора остался один день, потом привлечение Aliexpress.
На Aliexpress уже давно, года 4, статус Платиновый.
Комментарии для минусов внутри.