我们通过电子邮件或电报发送Veeam代理Linux的报告

问候,哈勃!

最近,我工作的公司开始提供Veeam作为主要备份工具。 一切都会好起来的,但是即使在熟悉过程中,结果如下:

  • Windows下对Veeam工具进行了改进,包括部署集中式存储库。
  • 在Linux下,只有Veeam代理;

基于此,事实证明,如果组织仅使用Linux,那么您将看不到任何报告。 或者,我们购买并安装Windows,并且已经在其中安装和配置了所需的一切,然后从那里获得有关Veeam代理(Linux)结果的完整信息。 或者我们去每辆车,看看代理商的下一个“工作日”是如何去那里的。

然后是一天,发现了一个仅使用Linux的小型组织,确实需要对其进行备份,并且最好是免费备份。 但是我每天都想集中监控代理的工作方式,而不是对服务器进行大规模的突袭。

要解决此问题,我必须转到Veeam网站上的FAQ,并阅读使用控制台和可用的veeam代理命令可以得到的信息。 从读取的结果中,诞生了一个小的Bash脚本,它查看上一个任务的结果,并在旨在存储备份的网络文件夹中留出一个可用空间。
实际上,我想共享此脚本。 我立即警告您,我不擅长编写脚本,因此欢迎提出批评和建议。

check_veeam_backup.sh
#!/bin/bash # PARAMETRS HOST=`hostname` REPORT_NAME_FORMAT="%d-%m-%Y" CURRENT_DATE_FORMAT="%d.%m.%Y" CURRENT_TIME_FORMAT="%H:%M:%S" REPORT_FILE=report_$(date +$REPORT_NAME_FORMAT).log #TOKEN="000000000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #RECIP_ID="00000000" REPOSITORY=" " MOUNT_POINT=" " # MOUNT_USER=" " # MOUNT_PASSWORD=" " # Get Veeam job list JOB_LIST=($(awk 'NR>1 {print$1}' <<< "$(veeamconfig job list)")) JOB_RESULT_PATH="/var/log/veeam/Backup/" echo -e "\nStart check on $(date +$CURRENT_DATE_FORMAT) at $(date +$CURRENT_TIME_FORMAT)\n" >> $REPORT_FILE # Check result Veeam backup job for JOB in $JOB_LIST do echo ------------------------------------------------------ >> $REPORT_FILE echo Check Schedule job name: $JOB from Host: $HOST >> $REPORT_FILE echo -e "------------------------------------------------------\n" >> $REPORT_FILE echo -e "$(veeamconfig schedule show --jobName $JOB)\n" >> $REPORT_FILE echo ------------------------------------------------------ >> $REPORT_FILE echo Check latest session Job name: $JOB from Host: $HOST >> $REPORT_FILE echo -e "------------------------------------------------------\n" >> $REPORT_FILE LAST_JOB_RESULT=$(ls -t $JOB_RESULT_PATH/$JOB | head -n1 | cut -c 25-) veeamconfig session info --id $LAST_JOB_RESULT >> $REPORT_FILE done echo ------------------------------------------------------ >> $REPORT_FILE echo Stop check on $(date +$CURRENT_DATE_FORMAT) at $(date +$CURRENT_TIME_FORMAT) >> $REPORT_FILE echo "\n" >> $REPORT_FILE # if the repository owner is not root # mount -t cifs -o user=$MOUNT_USER,password=$MOUNT_PASSWORD $REPOSITORY $MOUNT_POINT mount -t cifs $REPOSITORY $MOUNT_POINT echo ------------------------------------------------------ >> $REPORT_FILE echo -e "Check files in backup repository:\n" >> $REPORT_FILE ls -h $MOUNT_POINT >> $REPORT_FILE echo ------------------------------------------------------ >> $REPORT_FILE echo -e "Check free space on backup repository:\n" >> $REPORT_FILE echo -e "$(df -h $MOUNT_POINT)\n" >> $REPORT_FILE echo -e "------------------------------------------------------\n\n\n" >> $REPORT_FILE sleep 30 umount $MOUNT_POINT SEND_RESULT="$(echo -e "$(cat ${REPORT_FILE})")" # Send result to telegram # Uncomment the next line to send results to telegram # curl --silent --data "html&text=$SEND_RESULT" https://api.telegram.org/bot$TOKEN/sendMessage?chat_id=$RECIP_ID&parse_mode= # Send result to email # Uncomment the next line to send the results by email and replace <your_mail@yuor_domain> # mail -s "Report $HOST - $(date +$CURRENT_DATE_FORMAT)" your_mail@yuor_domen < $REPORT_FILE # if you want delete report file, uncomment next line # rm -rf $REPORT_FILE #Delete log file 


作为脚本的结果,将准备如下报告:

 Start check on 10.09.2019 at 14:13:30 ------------------------------------------------------ Check Schedule job name: HP from Host: hp ------------------------------------------------------ Every day At: 23:00 Run automatically: enabled ------------------------------------------------------ Check latest session Job name: HP from Host: hp ------------------------------------------------------ Backup session ID: {555ebf40-2fb9-47cc-baf0-7192c0ae896e} Job name: HP Job ID: {435117d7-ace8-4009-9c51-b00e8174c252} State: Success Start time: 2019-09-06 22:43:19 End time: 2019-09-07 00:02:14 ------------------------------------------------------ Stop check on 10.09.2019 at 14:13:30 ------------------------------------------------------ Check files in backup repository: media media ------------------------------------------------------ Check free space on backup repository:      % C  //share/backup 1,8T 96G 1,7T 6% /media/backup_repository ------------------------------------------------------ 

根据选择的方法,将通过邮件或电报(以我的情况)发送报告:



仍然可以将任务添加到crontab中,例如,每天上午9点

0 9 * * * / scripts / check_veeam_backup.sh> / dev / null#每天上午9点检查

现在,脚本每天早晨运行,到工作日开始时,有关代理工作和备份服务器上可用空间的所有信息都已准备就绪。

该脚本运行不顺利,尤其是使用用于安装网络文件夹的用户名和密码进行访问时,只有特殊用户才能访问该用户名和密码。 但是,如果您只允许该用户阅读,则有一个明显的加号。 您的备份将永远不会被该用户抹掉,即使是偶然的情况。

Source: https://habr.com/ru/post/zh-CN467435/


All Articles