Думаю найдется очень мало системных администраторов, которые не выполняют резервное копирование тех или иных данных. Эта заметка будет полезна (надеюсь) для тех, кто пользуется таким программным продуктом как Cobian Backup. А в особенности тем, у кого резервное копирование осуществляется не в одном месте, или даже в разных городах.


Как вы уже поняли из заголовка, я хочу поделиться с Вами маленьким скриптом, который позволяет отправлять что-то (в моем случае кусочек log файла) в telegram.


Для тех кто задается вопросом почему именно Telegram, ведь Cobian Backup умеет оправлять сообщения на почту — объясню свою точку зрения. Telegram — это популярный развивающийся месенджер, который использует огромное количество людей. На мой субъективный взгляд — это удобнее, чем почтовый клиент. Так же этот способ был опробован на ооооочень плохом интернете — все работает. Причем отправка через email в одинаковых условиях не срабатывала.


Скрипт для отправки сообщений в Telegram


Логику для себя я построил следующую. При выполнении задания в Cobian Backup в предпоследней строке лог файла у нас присутствует примерно следующий текст: " 2017-05-31 12:11 Копирование завершено. Ошибок: 0, обработано файлов: 3893, скопировано файлов: 3893, общий размер: 2,43 GB ". Значит мне каким то образом нужно выдернуть эту предпоследнюю строку из лог файла. Ну и собственно то, что я сделал — ниже.


Для отправки сообщений будем использовать PowerShell. Сам скрипт я позаимствовал тут, но чуть чуть его видоизменил.


$chat_id = 'chat_id' #Здесь указываем id чата, куда нам нужно отправлять сообщения. Сообщения отправляются как обычным пользователям, так и группам. 
$date=get-date -uformat "%Y-%m-%d" #Вытягиваем дату в нужном нам формате
$text = get-content -Path ('c:\Program Files (x86)\Cobian Backup 11\Logs\log '+$date+'.txt') -Encoding UTF8 #Указываем путь, где находятся логи cobian backup
$token = 'token' #Указываем токен, который выдается при регистрации бота
[string]$text=$text[$text.count-2] #выдергиваем предпоследнюю строку

#ну и собственно само отправление
$payload = @{
    "chat_id" = $chat_id;
    "text" = "$text";
    "parse_mode" = 'HTML';
}

Invoke-WebRequest `
    -Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $token) `
    -Method Post `
    -ContentType "application/json;charset=utf-8" `
    -Body (ConvertTo-Json -Compress -InputObject $payload)

Настройка Cobian Backup


Для тех, кто использует Cobian Backup в качестве утилиты для резервного копирования думаю не стоит описывать то, как создаются задания. Для тех, кто только собирается — думаю после установки Вам даже не понадобится что — то искать в интернете — все очень просто и доступно. Правда есть одно НО — Cobian Backup не умеет выполнять скрипты PowerShell. Ну не беда — зато знает что такое BAT. Для запуска используем следующий BATник


TIMEOUT /T 5 /NOBREAK
%SystemRoot%\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy ByPass -command "C:\ToTelegram.ps1"

ToTelegram.ps1 — это скрипт, который мы ранее создали в PowerShell. После создание bat файла можно уже и добавить его выполнение в задание. В параметрах задания выпираем пункт меню "Доп.действия" и добавляем в завершающие действия наш BAT файл.


Вот в принципе и все, как видите ничего сложного. Надеюсь для кого-то это будет полезным.


P.S. Мои потребности этот скриптик удовлетворяет, но я буду очень рад, если кто-то внесет свои предложения и замечания.

Поделиться с друзьями
-->

Комментарии (6)


  1. hamnsk
    28.06.2017 20:35

    Здорово конечно все, но кобиан жутко глюковатый особенно на больших файлах, проще поднять бакулу, тем более что с клиентом под винду никаких проблем нет


  1. squids
    28.06.2017 21:16

    То есть понимаю, минимально изменив, переделать под любой бэкапный софт?


    1. fedya_lutkovski
      28.06.2017 21:18

      Конечно, и не только бэкапный. Главное, что бы была возможность вызвать скрипт, который осуществляет отправку сообщения.


  1. UksusoFF
    29.06.2017 09:13

    У меня уведомления на почту шлются только если происходит ошибка. И в лог включается все что произошло с момента последней отправки в том числе куча успешных действий. У всех так или я криво настроил? Можно как-то исправить?


    1. fedya_lutkovski
      29.06.2017 09:22

      Ты, скорее всего, использовал стандартный механизм отправки сообщений. В этом примере я делал все немного по-другому


      1. UksusoFF
        29.06.2017 09:46

        Да, о нем и речь. Может кто решал подобное (: