نرسل تقارير وكيل Veeam Linux إلى البريد أو في Telegram

تحياتي يا هبر!

في الآونة الأخيرة ، بدأت الشركة التي أعمل في تقديم Veeam كأداة النسخ الاحتياطي الأساسية. وكل شيء سيكون على ما يرام ، ولكن حتى في عملية التعريف ، اتضح ما يلي:

  • يتم شحذ أدوات Veeam تحت Windows ، بما في ذلك نشر مستودع مركزي ؛
  • تحت لينكس ليس هناك سوى وكيل Veeam.

بناءً على ذلك ، اتضح أنه إذا كانت المنظمة تستخدم Linux فقط ، فلن ترى أي تقارير. أو نقوم بشراء Windows وتثبيته ، ونقوم بالفعل بتثبيت وتهيئة كل ما هو مطلوب ، ومن هناك نحصل على معلومات كاملة حول نتائج وكيل Veeam (Linux). أو نذهب إلى كل سيارة ونرى كيف ذهب "يوم العمل" التالي للوكيل إلى هناك.

ثم جاء اليوم الذي كانت فيه منظمة صغيرة تستخدم نظام Linux فقط والتي تحتاج حقًا إلى عمل نسخ احتياطية ويفضل مجانًا. لكن يوميًا لمراقبة كيفية عمل الوكيل هناك ، أريد القيام به مركزيًا ، بدلاً من الغارات الكبيرة على الخوادم.

لحل هذه المشكلة ، اضطررت إلى الانتقال إلى الأسئلة الشائعة على موقع Veeam الإلكتروني وقراءة ما يمكننا الحصول عليه باستخدام وحدة التحكم وأوامر عامل 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 ------------------------------------------------------ 

اعتمادًا على الطريقة التي تم اختيارها ، سيتم إرسال التقرير إما عن طريق البريد أو في Telegram (حالتي):



يبقى لإضافة المهمة إلى crontab ، على سبيل المثال ، كل يوم في 09:00

0 9 * * * / scripts / check_veeam_backup.sh> / dev / null # الاختيار اليومي في الساعة 9 صباحًا

يتم الآن تشغيل البرنامج النصي كل صباح وبحلول الوقت الذي يبدأ فيه يوم العمل ، تتوفر جميع المعلومات حول عمل الوكلاء والمساحة المتاحة على خادم النسخ الاحتياطي.

لا يعمل البرنامج النصي بسلاسة ، خاصةً باستخدام اسم مستخدم وكلمة مرور لتركيب مجلد شبكة ، يمكن الوصول إليه فقط للمستخدم الخاص. ولكن إذا سمحت لهذا المستخدم بالقراءة فقط ، فهناك ميزة إضافية واضحة. لن يتم فرك النسخ الاحتياطية من قبل هذا المستخدم ، حتى عن طريق الصدفة.

Source: https://habr.com/ru/post/ar467435/


All Articles