Cobian Backup и отправка сообщений в Telegram

в 16:15, , рубрики: cmd, cobian backup, powershell, резервное копирование

Думаю найдется очень мало системных администраторов, которые не выполняют резервное копирование тех или иных данных. Эта заметка будет полезна (надеюсь) для тех, кто пользуется таким программным продуктом как 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 11Logslog '+$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%System32WindowsPowerShellv1.0PowerShell.exe -ExecutionPolicy ByPass -command "C:ToTelegram.ps1"

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

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

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

Автор: fedya_lutkovski

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js