рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рдкрддреНрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реАрдо рдПрдЬреЗрдВрдЯ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХреБрд╢рд▓ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: "рдареАрдХ рд╣реИ, рдХреИрд╕реЗ? рд╕рд░реНрд╡рд░ рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдкрддреНрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ! " рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдзрд╛рдЧрд╛ рдордВрдЪ рдкрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рдерд╛ред рдФрд░ рдЬрдм рд╕реЗ рд▓реЛрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд░реБрдХреЗрдВрдЧреЗ, рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ! рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдкрддреНрд░ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдПрдХ html рдкреГрд╖реНрда рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЖрджреЗрд╢ рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдХрд╛рдо рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдУ: рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб, рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ: "рд▓рд┐рдирдХреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдо рдПрдЬреЗрдВрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?"

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╡рд╛рдм рдкрд╕рдВрдж рди рдХрд░реЗрдВ, рдореБрдЭреЗ рджреЛрд╖ рди рджреЗрдВред рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдмрдбрд╝реЗ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ:

  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ smpt рд╕рд░реНрд╡рд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ( mail рдХрдорд╛рдВрдб) рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдореЗрд▓рдЯреБрдЗрд▓реНрд╕ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рднреЗрджреНрдпрддрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдХрд╣реАрдВ рднреА рдкрддреНрд░ рднреЗрдЬ рд╕рдХреЗрдВред рд╣рд╛рдБ, рдФрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдмрдВрдж рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ, рд╕рдмрдиреЗрдЯ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛, рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ ...
  • рджреВрд╕рд░реЗ, рдЪреВрдВрдХрд┐ рдореЗрд▓реНрдпреВрдЯрд┐рд▓реНрд╕ рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП), рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╣рдо рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╣рд╛рдВ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдордВрдЪ рдкрд░ рдПрдХ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдзрд╛рдЧрд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ: "рд╕рд░реНрд╡рд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдИрдореЗрд▓ рднреЗрдЬреЗ рдЬрд╛рдПрдВред"
  • рдФрд░ рддреАрд╕рд░рд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдмрдбрд╝реЗ рдЙрджреНрдпрдо рдЧреНрд░рд╛рд╣рдХ рд╡реАрдо рдмреИрдХрдЕрдк рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрдВрд╕реЛрд▓ рдЙрди рд╕рднреА рдмреИрдХрдЕрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрд┐рдП рдЧрдП рдереЗред рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред

Veeam Backup & Replication 9.5 Update 4 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реЗрд╡рд┐рдд рдЖрднрд╛рд╕реА / рднреМрддрд┐рдХ рдорд╢реАрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рдеред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 3 (рд╕рдорд╛рд╡реЗрд╢реА) рднреМрддрд┐рдХ рд╕рд░реНрд╡рд░ рддрдХ рд╣реИрдВ - рддреЛ рдореБрдлреНрдд рд╡реАрдмреАрдЖрд░ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреЗред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 3 рд╕реЗ рдЕрдзрд┐рдХ рдорд╢реАрдиреЗрдВ рд╣реИрдВ, рддреЛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдореЙрдирд┐рдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕реА / рд╕реА ++ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдЬрдЧрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЦреБрд╢ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред

veeamconfig рд╣рдо veeamconfig рдХрдорд╛рдВрдб veeamconfig ред veeamconfig рдЯреАрдо рдЙрддреНрдкрд╛рдж рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдирд┐рд╕реНрд╕рдВрджреЗрд╣, ncurses рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЫрджреНрдо рднреМрдЧреЛрд▓рд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдВрдЦ рдХреЛ рдЕрдзрд┐рдХ рднрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреБрдЫ рдирдП рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реАрдПрд▓рдЖрдИ рд╣рдорд╛рд░рд╛ рд╕рдм рдХреБрдЫ рд╣реИред

рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╡реАрдо рдПрдЬреЗрдВрдЯ рдХрд╛ рд╡рд░реНрдгрди рд╕рдВрд╕реНрдХрд░рдг 3.0 рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА, рдЗрд╕рд▓рд┐рдП рдорддрднреЗрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реАрдо рдПрдЬреЗрдВрдЯ рдореЗрдВ рд╕реАрдПрд▓рдЖрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред рдмрд╕ veeamconfig --help рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЙрдкрд▓рдмреНрдз рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реЗрдЧреА:

 $sudo veeamconfig --help Veeam Agent for Linux (c) Veeam Software AG Usage: veeamconfig [command] Commands: repository - Backup repositories management vbrserver - Veeam Backup and Replication servers management job - Backup jobs management backup - Backups management point - Restore points management license - License management agreement - End User License Agreement management config - Import/export configuration schedule - Jobs schedule configuration cloud - Cloud provider management mode - Operation mode session - Sessions management ui - User interface aap - Application-aware processing version, --version, -v - Product version help, --help, -h - Short help 

рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд╕ veeamconfig config --help рдХреЙрд▓ рдХрд░реЗрдВред рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

 Veeam Agent for Linux (c) Veeam Software AG Usage: veeamconfig config [command] Commands: import - Import repositories and jobs into database export - Export repositories and jobs from database grabLogs - Collect support logs bundle patchiso - Create custom Veeam Recovery Media adding all hardware drivers from this system help, --help, -h - Short help 

рдпрд╣рд╛рдБ, рд╡реИрд╕реЗ, рд╣рдо grabLogs рд▓реЙрдЧ рдХрд▓реЗрдХреНрд╢рди grabLogs рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд▓реЙрдЧ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЯреАрдо рднреА рд╣реИ рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг 3.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА:

 $ sudo veeamconfig agreement --help Veeam Agent for Linux (c) Veeam Software AG Usage: veeamconfig agreement [command] Commands: acceptEula - Accept Veeam End User License Agreements acceptThirdPartyLicenses - Accept Veeam 3rd party License Agreement show - Show End User License Agreements acceptance status help, --help, -h - Short help 

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 3.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рдордЭреМрддреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 $ sudo veeamconfig job list I accept Veeam Software End User License Agreement: /usr/share/doc/veeam/EULA (yes/no | y/n): yes I accept the terms of the following 3rd party software components license agreements: /usr/share/doc/veeam/3rd_party (yes/no | y/n): 

рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдмрд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рджрд┐рдП рдЧрдП рдереЗ:

 veeamconfig agreement acceptEula veeamconfig agreement acceptThirdPartyLicenses 

рд╡реЗ рдЖрдкрдХреЛ рдЖрдЧреЗ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рдордЭреМрддреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдкрддреНрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рднрдЯрдХ рдЧрдПред

рд╕рд░реНрд╡рд░ рд╕реНрдерд┐рддрд┐ рдирд┐рдЧрд░рд╛рдиреА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ veeamconfig session list рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ:

 Job name Type ID State Started at Finished at bj-home Backup {dbe48e88-3df7-4712-a472-09af8fed4e80} Success 2018-12-05 15:43 2018-12-05 15:44 bj-home Backup {c178a799-2935-4bd6-883b-b11278000076} Success 2018-12-05 16:26 2018-12-05 16:26 bj-home Backup {3405dad3-0016-4a00-933e-60ef66b30324} Success 2018-12-06 06:00 2018-12-06 06:00 

рдЦреИрд░, рдпрд╣рд╛рдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдХрд┐ рдХрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдмреИрдХрдЕрдк рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдХреНрдпрд╛ рд╕рдлрд▓рддрд╛ рдорд┐рд▓реАред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, "рдПрдЧреНрдЬрд╝реЙрд╕реНрдЯ" рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдФрд░ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕рд╛рд▓ рдореЗрдВ рдкрддреНрд░ рд▓рдЧрднрдЧ 365 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдп рдХреА рддрд▓рд╛рд╢ рдердХрд╛рдК рд▓рдЧ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ "рдирд┐рдХрд╛рд╕" рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреВрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ

 class CSession: @staticmethod def List(): return subproccall( ["veeamconfig", "session", "list"] ) class CSessionInfoList(object): def __init__(self, list): self.list = list def List(self): return self.list @staticmethod def Get(): text = CSession.List() lines = text.split("\n") list = [] # session info list for line in lines: if len(line) == 0: continue words = line.split() if len(words) == 0: continue if words[0] == "Job": continue if words[0] == "Total": continue try: jobName = words[0] type = words[1] id = words[2] state = words[3] startTime = words[4] + " " + words[5] finishTime = words[6] + " " + words[7] list.append(CSessionInfo(id, type, jobName, state, startTime, finishTime)) except: print "Failed to parse [", line, "]" return CSessionInfoList(list) 

рдареАрдХ рд╣реИ, рдЕрдм рдЪрд▓реЛ рдПрдХ рдкрддреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЦреБрдж рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред

 def SendMailsessions(): print "---" print "Sending statistic to administrator:" sessions = veeamlpb.session.CSessionInfoList.Get() recipient = "dear.admin@company.com" subject = "VAL status notification" text = "Statistic:\n" inx = 0; successCount = 0 warningCount = 0 errorCount = 0 for sessionInfo in sessions.List(): if (sessionInfo.State() == "Success"): successCount += 1 elif (sessionInfo.State() == "Warning"): warningCount += 1 else: errorCount += 1 text += str(successCount)+"/"+str(warningCount)+"/"+str(errorCount)+" Success/Warning/Error\n" text += "Last 10 session:\n" for sessionInfo in reversed(sessions.List()): if inx == 10: text += "...\n" break; text += str(inx)+" | "+sessionInfo.State()+" | "+sessionInfo.JobName()+" | "+sessionInfo.StartTime()+" / "+sessionInfo.FinishTime() + "\n" #text += inx += 1 text += "\n" text += "--------------------------------------------------------------------------------\n" text += " Yours sincerely, Veeam Agent for Linux Monitor\n" print text os.system("echo '"+text+"' | mail -s '"+subject+"' "+recipient) 

рдирддреАрдЬрддрди, mailutils рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рд╣рдо рдПрдХ рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 Statistic: 3/0/0 Success/Warning/Error Last 10 session: 0 | Success | bj-home | 2018-12-06 06:00 / 2018-12-06 06:00 1 | Success | bj-home | 2018-12-05 16:26 / 2018-12-05 16:26 2 | Success | bj-home | 2018-12-05 15:43 / 2018-12-05 15:44 -------------------------------------------------------------------------------- Yours sincerely, Veeam Agent for Linux Monitor 

рдкрддреНрд░ рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ 10 рд╕рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдкрддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдлрд▓ рдФрд░ рдмрд╣реБрдд рд╕рддреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрддреНрд░ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдореЗрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдФрд░ рдПрдХ рдХреЙрдлреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░рд╛рдд рдХреЗ рдмреИрдХрдЕрдк рд╕рдлрд▓ рдереЗред

рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк xml-format рдореЗрдВ рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣рд╛рдВ, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдПрдХрд▓ рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд┐рд▓рд╛рдПрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдореЗрдВ рдПрдХреНрд╕рдПрдордПрд▓-рджреЛ рд▓рд╛рдЗрдиреЗрдВ рдорд┐рд▓реЗрдВрдЧреА:

 sessionList = veeamlpb.session.CSessionList() text = sessionList.ToXml() 

рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ

 sessionListFileName = "session_list.xml" print "Store XML to file: ",sessionListFileName sessionListXmlFile = open(sessionListFileName, "w") sessionListXmlFile.write(text) sessionListXmlFile.close() 

рдлрд┐рд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд XML рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВред рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдк рднреА рд╕рдВрднрд╡ рд╣реИ - рд╕рд░реНрд╡рд░ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЛ рдЙрди рдорд╢реАрдиреЛрдВ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмреИрдХрдЕрдк рд╣реИрдВред рд╕рд░реНрдЬрдХ рдХреМрди рд╣реИ рдпрд╣ рдЕрднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рднреА рдорд╢реАрдиреЛрдВ рд╕реЗ рд╕рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╛рдЗрд▓реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдореИрдВрдиреЗ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛:

 hostname = os.uname()[1] target = "user@admin-desktop:/home/user" os.system("scp ./"+sessionListFileName+" "+target+"/backups/"+hostname+"/session_list.xml") 

рдЕрдм, рд╕рд░реНрд╡рд░ рдХреА рдУрд░, рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕реБрдВрджрд░ HTML рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

 import veeamlpb import os import datetime import xml.etree.ElementTree as xml def main(): hosts = [] backupsDirectory = "/home/user/backups" for item in os.listdir(backupsDirectory): if item in [".", ".."]: continue if os.path.isdir(os.path.join(backupsDirectory,item)): hosts.append(item) print "item: ",item if len(hosts) == 0: return 0 backupSessionMap = {} for host in hosts: print "found host: ", host sessionInfoFile = os.path.join(os.path.join(backupsDirectory,host), "session_list.xml") sessionList = veeamlpb.session.CSessionInfoList.FromXmlFile(sessionInfoFile) backupSessionMap[host] = sessionList for sessionInfo in sessionList.List(): print "Session:",sessionInfo.ToString() html = xml.Element("html") body = xml.SubElement(html, "body", {"style":"background-color: #00b336;"}) xml.SubElement(body,"h1").text = "Report at "+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") xml.SubElement(body,"h2").text = "Statistic:" for host in hosts: sessionList = backupSessionMap[host] success=0 warning=0 error=0 if len(sessionList.List()) == 0: continue for sessionInfo in sessionList.List(): if sessionInfo.State() == "Success": success +=1 elif sessionInfo.State() == "Warning": warning +=1 else: error +=1 latestSessionInfo = sessionList.List()[-1] attr = {} if latestSessionInfo.State() == "Success": #attr["style"] = "background-color: #00b336;" attr["style"] = "background-color: #005f4b; color: white;" elif latestSessionInfo.State() == "Warning": attr["style"] = "background-color: #93ea20;" else: attr["style"] = "background-color: #ba0200; color: white;" xml.SubElement(xml.SubElement(body,"p"),"span", attr).text = \ host + " - "+str(success)+"/"+str(warning)+"/"+str(error)+" Success/Warning/Error" for host in hosts: sessionList = backupSessionMap[host] xml.SubElement(body,"h2").text = host+":" tableStyle =xml.SubElement(body,"style") tableStyle.attrib["type"] = "text/css" tableStyle.text = "TABLE {border: 1px solid green;} TD{ border: 1px solid green; padding: 4px;}" table = xml.SubElement(body,"table") thead = xml.SubElement(table, "thead") xml.SubElement(thead, "th").text = "Number" xml.SubElement(thead, "th").text = "State" xml.SubElement(thead, "th").text = "Job name" xml.SubElement(thead, "th").text = "Start at" xml.SubElement(thead, "th").text = "Complete at" tbody = xml.SubElement(table, "tbody") inx = 0 for sessionInfo in reversed(sessionList.List()): if inx == 10: break; tr = xml.SubElement(tbody,"tr") xml.SubElement(tr, "td").text = str(inx) attr ={} if sessionInfo.State() == "Success": pass elif sessionInfo.State() == "Warning": attr["style"] ="background-color: #93ea20;" else: attr["style"] ="background-color: #ba0200; color: white;" xml.SubElement(tr, "td", attr).text = sessionInfo.State() xml.SubElement(tr, "td").text = sessionInfo.JobName() xml.SubElement(tr, "td").text = sessionInfo.StartTime() xml.SubElement(tr, "td").text = sessionInfo.FinishTime() inx += 1 xml.ElementTree(html).write("summary.html", encoding='utf-8', method='html') return 0 exit(main()) 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рд╣реИ:



рдореБрдЭреЗ рд╕реБрдВрджрд░ рдЙрддреНрдкрд╛рдж рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдерд╛ред рдХрд╛рд░реНрдп рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдерд╛ рдХрд┐ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рдПрдХ рд╕реЗ рджреЛ рджрд┐рдиреЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдЖрдк рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реАрдо рдПрдЬреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдУрдкрди рдмреИрдХрдЕрдк рдореЙрдирд┐рдЯрд░" рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрд░реНрд╕рд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╖рдп, рдпрд╛ рд╢рд╛рдпрдж рдбрд┐рдкреНрд▓реЛрдорд╛ рдХреЗ рд▓рд┐рдП рднреА, рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдмрд╣рд╛рдирд╛ред рд╕рд╣рдордд рд╣реИрдВ, 80 рд╡реЗрдВ рд╕реНрддрд░ рдХреЗ рдпреЛрдЧ рдмрдирдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд╕рднреА рдХреЛрдб http://www.github.com/CodeImp/veeampy/ рдкрд░ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдбрд╛рдЙрдирд▓реЛрдб, рдЙрдкрдпреЛрдЧ, рдкреВрд░рдХ рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдкрд░ рдХрд╛рдВрдЯрд╛ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдб GPL-2 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдУрдкрдирд╕реЛрд░реНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ - рдЯреЗрд╕реНрдЯ рд▓реИрдм рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

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


All Articles