Думаю найдется очень мало системных администраторов, которые не выполняют резервное копирование тех или иных данных. Эта заметка будет полезна (надеюсь) для тех, кто пользуется таким программным продуктом как 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. Мои потребности этот скриптик удовлетворяет, но я буду очень рад, если кто-то внесет свои предложения и замечания.
Автор: человек со стажем