рдХреЗрд╡реАрдПрдо (рдЕрдВрдбрд░) рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд╛рд░ рдХреА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡реАрдбреАрдЖрдИ

рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?


рдпрд╣ рд▓реЗрдЦ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ "рдПрдХ рдмрд╛рд░" рдиреМрдХрд░реА рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


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

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рдпрд╣ рдерд╛ рдХрд┐ рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдШреЛрд╖рдгрд╛") рдХреЗ рддрд╣рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ "рддреЗрдЬ" рд╣реИ, рдФрд░ рдЦреБрд▓реЗ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдВрджреЛрд▓рди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдПрдордПрд╕ рдХрд╛рд░реНрдпрд╛рд▓рдп рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдореЗрдВ рдкреНрд░рдореБрдЦ рдорд╛рдирдХ рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗред

рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░реЛрдВ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдХреЛ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдереА, рдЬрд┐рд╕рд╕реЗ рдЙрдирдХрд╛ рд░рд┐рд╕рд╛рд╡ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рддрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдиреЗ рдкрд╣рд▓реЗ рд╣реА MFC рдХреЛ рдиреАрдЪрд╛ рджрд┐рдЦрд╛рдпрд╛ ред рд▓реЗрдХрд┐рди рдЕрд░реНрдз-рдиреНрдпрд╛рдпрд┐рдХ (рд░рд╛рдЬреНрдп рд╕реНрд╡рд╛рдпрддреНрдд рд╕рдВрд╕реНрдерд╛рди) MFC рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЧреИрд░-рд░рд╛рдЬреНрдп рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рдРрд╕реА рдХрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрдВрдбрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд▓рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдмрд╛рд╣рд░реА рднрдВрдбрд╛рд░рдг рдореАрдбрд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕ рдкрд░, рд╣рд░ рддрд░рд╣ рд╕реЗ, рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдореИрд▓рд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдкрддреЛрдВ рдХреА рдПрдХ рд╕рдлреЗрдж рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдХрд╛рд░рдг рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдореИрд▓рд╡реЗрдпрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЕрдиреНрдп рд╡рд┐рднрд╛рдЧреЛрдВ рдХреЗ рдХрд░реНрдордЪрд╛рд░реА рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реБрдП, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдПред

рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

  • рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж, рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ (рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕рд╣рд┐рдд) рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд╛рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
  • рдкрддреЛрдВ рдХреА рдПрдХ рд╕рдлреЗрдж рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧред
  • рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзред
  • рдпрджрд┐ рд╕рддреНрд░ 5 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд╕рддреНрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕реНрдЯреЗрд╢рди рдХреЛ рдПрдХ рд╕рдлрд╛рдИ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ

  • рдкреНрд░рддрд┐ рд╢рд╛рдЦрд╛ рдЧреНрд░рд╛рд╣рдХ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 4 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред
  • рд╕рд┐рд╕реНрдЯрдо рдХреА рддрддреНрдкрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рдордп рд╕реЗ "рдореИрдВ рдПрдХ рдХреБрд░реНрд╕реА рдкрд░ рдмреИрда рдЧрдпрд╛"ред
  • рд╕реАрдзреЗ "рд╕реНрд╡-рд╕реЗрд╡рд╛ рдХреЗрдВрджреНрд░" рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╕рд╛рдЗрдЯ рд╕реЗ рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ (рд╕реНрдХреИрдирд░, рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡) рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
  • рдЧреНрд░рд╛рд╣рдХ рдХреА рдЗрдЪреНрдЫрд╛
  • рдкрд░рд┐рд╕рд░ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╕рд╛рдордЧреНрд░реА (рдЪрд┐рддреНрд░реЛрдВ) рдХрд╛ рдкреНрд░рджрд░реНрд╢рдиред

рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХрд╛ рдкреНрд░рд╡рд╛рд╣


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

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

рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдПрдирдбреАрдП, рд▓реЗрдХрд┐рди рдЦреЛрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА, рдЬрд┐рд╕рдиреЗ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдирд╣реАрдВ рдЧрдпрд╛ред

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

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

рдпрджрд┐ рдЖрдк рд░рдВрдЧреАрди рдХрд╛рдЧрдЬ рд▓реЗрддреЗ рд╣реИрдВ,
рдкреЗрдВрдЯ, рдмреНрд░рд╢ рдФрд░ рдЧреЛрдВрдж,
рдФрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдирд┐рдкреБрдгрддрд╛ ...
рдЖрдк рдПрдХ рд╕реМ рд░реВрдмрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ!

рдпреЛрдЬрдирд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдмреЗрдВрдЪ рдХрд╛ рд╡рд┐рд╡рд░рдг




рд╕рднреА рдЙрдкрдХрд░рдг рд╢рд╛рдЦрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдиреЗрдЯ рдЪреИрдирд▓ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рд╣реИ, рдпрд╣ рдЕрд╕рд╛рдзрд╛рд░рдг рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рдкрд░ рд╣реИ, рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ, рдХрд┐ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (abbrред рд╡реАрдПрдо рдмрд╛рдж рдореЗрдВ рдкрд╛рда рдореЗрдВ)ред рдХреБрдЫ рднреА рдирд╣реАрдВ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ KVM рд╕рд░реНрд╡рд░ рдкрд░ рд░рдЦрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрд╕рд╕реЗ рд▓реЛрдб рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИред

рдЧреНрд░рд╛рд╣рдХ рд╕реНрдЯреЗрд╢рди - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "рд╕реНрд╡-рд╕реЗрд╡рд╛ рд╕реНрдЯреЗрд╢рди", рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ "рдлреНрд░рдВрдЯ-рдПрдВрдб"ред рд▓реЗрдиреЛрд╡реЛ IdeaCentre рдХреЗ nettops рд╣реИрдВред рдЗрд╕ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ? рд╣рд╛рдВ, рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреНрд░рдВрдЯ рдкреИрдирд▓ рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдпреВрдПрд╕рдмреА рдХрдиреЗрдХреНрдЯрд░ рдФрд░ рдХрд╛рд░реНрдб рд░реАрдбрд░ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реИред рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдореЗрдВ, рдХрд╛рд░реНрдб рд░реАрдбрд░ рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд▓реЗрдЦрди рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рд▓рд╛ рдПрдХ рдПрд╕рдбреА рдХрд╛рд░реНрдб рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдлреЗрдбреЛрд░рд╛ 28 рдХреА рд╕рдВрд╢реЛрдзрд┐рдд рд▓рд╛рдЗрд╡ рдЫрд╡рд┐ рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИред рдмреЗрд╢рдХ, рдПрдХ рдореЙрдирд┐рдЯрд░, рдХреАрдмреЛрд░реНрдб рдФрд░ рдорд╛рдЙрд╕ рдиреЗрдЯрдЯреЙрдк рд╕реЗ тАЛтАЛрдЬреБрдбрд╝реЗ рд╣реИрдВред

рд╕реНрд╡рд┐рдЪ - рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХрд╛ рдПрдХ unremarkable рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪ, рдпрд╣ рд╕рд░реНрд╡рд░ рд░реВрдо рдореЗрдВ рд╣реИ рдФрд░ рд░реЛрд╢рдиреА рдХреЗ рд╕рд╛рде рдЭрдкрдХрд╛рддрд╛ рд╣реИред рдпрд╣ "рд╕реНрд╡-рд╕реЗрд╡рд╛ рд╕реНрдЯреЗрд╢рдиреЛрдВ" рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

KVM_Server рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдореВрд▓ рд╣реИред рдмреЗрдВрдЪ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, 8 рдЬреАрдмреА рд░реИрдо рдХреЗ рд╕рд╛рде рдХреЛрд░ 2 рдХреНрд╡рд╛рдб Q9650 рдиреЗ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ 3 рд╡рд┐рдВрдбреЛрдЬ 10 рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдКрдкрд░ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ред рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо - рдПрдбреЗрдкреНрдЯреЗрдХ 3405 2 рдбреНрд░рд╛рдЗрд╡ RAID 1 + рдПрд╕рдПрд╕рдбреАред Xeon 1220 рдХреЗ рдХреНрд╖реЗрддреНрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ LSI 9260 + SSD рдиреЗ 5-6 VMs рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ред рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдирд┐рд╡реГрддреНрдд рд╕реЗрд╡рд╛ рд╕реЗ рд╕рд░реНрд╡рд░ рдорд┐рд▓реЗрдЧрд╛, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреВрдВрдЬреА рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реЛрдЧреАред KVM рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде pool_Vm рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкреВрд▓ рдЗрд╕ рд╕рд░реНрд╡рд░ (рдПрд╕) рдкрд░ рддреИрдирд╛рдд рд╣реИред

Vm рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХрд╛ рдмреИрдХрдПрдВрдб рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдХрд╛рдо рд╣реИред

Enp5s0 рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ "рд╕реНрд╡-рд╕реЗрд╡рд╛ рд╕реНрдЯреЗрд╢рдиреЛрдВ", dhcpd, ntpd, httpd рдкрд░ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ xinetd "рд╕рд┐рдЧреНрдирд▓" рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирддрд╛ рд╣реИред

Lo0 рд▓реВрдкрдмреИрдХ рдЫрджреНрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рд╕реНрдЯреИрдВрдбрд░реНрдбред

Spice_console - рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рдЖрд░рдбреАрдкреА рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдм рдЖрдк рдХреЗрд╡реАрдПрдо + рд╕реНрдкрд╛рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдВрдбрд▓ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдХрд╛рдИ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ - рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрдВрд╕реЛрд▓ рдкреЛрд░реНрдЯред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рд╣рдореЗрдВ Vm рдХрдВрд╕реЛрд▓ рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Vm рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред рд╕рд┐рдЧреНрдирд▓ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП Vm рдХреЗ рд╕рд╛рде рд╕рднреА рдЗрдВрдЯрд░реИрдХреНрд╢рди, рд╕рд░реНрд╡рд░ рд▓реЗрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рдХрдЯрддрдо рдПрдирд╛рд▓реЙрдЧ IPKVM рд╣реИред рдпрд╛рдиреА рдПрдХ рд╡реАрдПрдо рдореЙрдирд┐рдЯрд░ рдХреА рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЗрд╕ рдмрдВрджрд░рдЧрд╛рд╣ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдорд╛рдЙрд╕ рдЖрдВрджреЛрд▓рди рдкрд░ рдбреЗрдЯрд╛ рдЗрд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ (рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд) рд╕реНрдкрд╛рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ USB рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрд╡рдпрдВ Vm рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡, рд╕реНрдХреИрдирд░, рд╡реЗрдмрдХреИрдо рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред

Vnet0, virbr0 рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб Vm рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рди рд╕реЗ

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рди рдХреЛ рдлреЗрдбреЛрд░рд╛ 28 рдХреА рд╕рдВрд╢реЛрдзрд┐рдд рд▓рд╛рдЗрд╡ рдЫрд╡рд┐ рд╕реЗ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ 169.254.24.0/24 рд╕реЗ dhcp рджреНрд╡рд╛рд░рд╛ рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ "рд╕рд┐рдЧреНрдирд▓" рдФрд░ "рд╕реНрдкрд╛рдЗрд╕" рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдбрд╛рдЙрдирд▓реЛрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдЯреЗрд╢рди рдЧреНрд░рд╛рд╣рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, "рдУрдкрдирдмреЙрдХреНрд╕" рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░рдмрдВрдзрдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдСрдЯреЛрд╕реНрдЯрд╛рд░реНрдЯ рдСрдЯреЛрд╕реНрдЯрд╛рд░реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЧрдИ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдЯреЛрд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреВрд░рд╕реНрдеред S рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИред

$ рдШрд░ / .config / рдУрдкрдирдмреЙрдХреНрд╕ / рд╕реНрдХреНрд░рд┐рдкреНрдЯ / Remote.sh
#!/bin/sh server_ip=$(/usr/bin/cat /etc/client.conf |/usr/bin/grep "server_ip" \ |/usr/bin/cut -d "=" -f2) vdi_signal_port=$(/usr/bin/cat /etc/client.conf |/usr/bin/grep "vdi_signal_port" \ |/usr/bin/cut -d "=" -f2) vdi_spice_port=$(/usr/bin/cat /etc/client.conf |/usr/bin/grep "vdi_spice_port" \ |/usr/bin/cut -d "=" -f2) animation_folder=$(/usr/bin/cat /etc/client.conf |/usr/bin/grep "animation_folder" \ |/usr/bin/cut -d "=" -f2) process=/usr/bin/remote-viewer while true do if [ -z `/usr/bin/pidof feh` ] then /usr/bin/echo $animation_folder /usr/bin/feh -N -x -D1 $animation_folder & else /usr/bin/echo fi /usr/bin/nc -i 1 $server_ip $vdi_signal_port |while read line do if /usr/bin/echo "$line" |/usr/bin/grep "RULE ADDED, CONNECT NOW!" then /usr/bin/killall feh pid_process=$($process "spice://$server_ip:$vdi_spice_port" \ "--spice-disable-audio" "--spice-disable-effects=animation" \ "--spice-preferred-compression=auto-glz" "-k" \ "--kiosk-quit=on-disconnect" | /bin/echo $!) /usr/bin/wait $pid_process /usr/bin/killall -u $USER exit else /usr/bin/echo $line >> /var/log/remote.log fi done done 


/etc/client.conf
 server_ip=169.254.24.1 vdi_signal_port=5905 vdi_spice_port=5906 animation_folder=/usr/share/backgrounds/animation background_folder=/usr/share/backgrounds2/fedora-workstation 


Client.conf рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЪрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг
server_ip - рдкрддрд╛ KVM_Server
vdi_signal_port - рдкреЛрд░реНрдЯ KVM_Server рдЬрд┐рд╕ рдкрд░ xinetd "рдмреИрдарддрд╛ рд╣реИ"
vdi_spice_port - рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ KVM_Server, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рд░рд┐рдореЛрдЯ-рд╡реНрдпреВрдЕрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЪрдпрдирд┐рдд Vm рдХреЗ рдорд╕рд╛рд▓рд╛ рдкреЛрд░реНрдЯ (рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡рд┐рд╡рд░рдг) рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдПрдиреАрдореЗрд╢рди_ рдлреЛрд▓реНрдбрд░ - рд╡рд╣ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд╣рд╛рдБ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
background_folder - рд╡рд╣ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд╣рд╛рдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдПрдиреАрдореЗрд╢рди рдкрд░ рдЕрдзрд┐рдХред

Remote.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /etc/client.conf рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧ рд▓реЗрддрд╛ рд╣реИ рдФрд░ KVM рд╕рд░реНрд╡рд░ рдХреЗ "vdi_signal_port" рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП nc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рд╕реНрдЯреНрд░рд┐рдВрдЧ "RULE ADDED, CONNECT Now" рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИред рдЬрдм рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдЗрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рддреЛ рд░рд┐рдореЛрдЯ-рд╡реНрдпреВрдЕрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд┐рдпреЛрд╕реНрдХ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ "vdi_spice_port" рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред рджреВрд░рд╕реНрде-рджрд░реНрд╢рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдВрдд рддрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рд▓рдВрдмрд┐рдд рд╣реИред

"Vdi_spice_port" рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд░рд┐рдореЛрдЯ-рд╡реНрдпреВрдЕрд░, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, lo0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ "spice_console" рдкреЛрд░реНрдЯ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдХрдВрд╕реЛрд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдХрд╛рд░реНрдп рд╕реАрдзреЗ рд╣реЛрддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмреИрд▓рд╢реЙрдЯ рдПрдиреАрдореЗрд╢рди рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЗрдкреАрдИрдЬреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрд▓рд╛рдЗрдб рд╢реЛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдорд╛рд░реНрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдиреАрдореЗрд╢рди_рдлреЙрд░реНрдб рдЪрд░ рдХреЗ рдорд╛рди рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ "spice_console" рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдЦреЛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╢рдЯрдбрд╛рдЙрди / рд░рд┐рдмреВрдЯ (рдпрд╛рдиреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрдд) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдЪрд▓ рд░рд╣реА рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рд▓рд╛рдЗрдЯрдореИрдб рдХреЗ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реМрдЯрдиреЗ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред ред

KVM рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рд╕реЗ


рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ "рд╕рд┐рдЧреНрдирд▓" рдкреЛрд░реНрдЯ рдкрд░, enp5s0 xinetd рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред "рд╕рд┐рдЧреНрдирд▓" рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, xinetd vm_manager.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рди рдХреЗ nc рд╕рддреНрд░ рдореЗрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред

/etc/xinetd.d/test-server
 service vdi_signal { port = 5905 socket_type = stream protocol = tcp wait = no user = root server = /home/admin/scripts_vdi_new/vm_manager.sh } 


/home/admin/scripts_vdi_new/vm_manager.sh
 #!/usr/bin/sh #<SET LOCAL VARIABLES FOR SCRIPT># SRV_SCRIPTS_DIR=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_scripts_dir" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "SRV_SCRIPTS_DIR=$SRV_SCRIPTS_DIR" export SRV_SCRIPTS_DIR=$SRV_SCRIPTS_DIR SRV_POOL_SIZE=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_pool_size" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "SRV_POOL_SIZE=$SRV_POOL_SIZE" export "SRV_POOL_SIZE=$SRV_POOL_SIZE" SRV_START_PORT_POOL=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_start_port_pool" |/usr/bin/cut -d "=" -f2) /usr/bin/echo SRV_START_PORT_POOL=$SRV_START_PORT_POOL export SRV_START_PORT_POOL=$SRV_START_PORT_POOL SRV_TMP_DIR=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_tmp_dir" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "SRV_TMP_DIR=$SRV_TMP_DIR" export SRV_TMP_DIR=$SRV_TMP_DIR date=$(/usr/bin/date) #</SET LOCAL VARIABLES FOR SCRIPT># /usr/bin/echo "# $date START EXECUTE VM_MANAGER.SH #" make_connect_to_vm() { #<READING CLEAR.LIST AND CHECK PORT FOR NETWORK STATE># /usr/bin/echo "READING CLEAN.LIST AND CHECK PORT STATE" #<CHECK FOR NO ONE PORT IN CLEAR.LIST># if [ -z `/usr/bin/cat $SRV_TMP_DIR/clear.list` ] then /usr/bin/echo "NO AVALIBLE PORTS IN CLEAN.LIST FOUND" /usr/bin/echo "Will try to make housekeeper, and create new vm" make_housekeeper else #<MINIMUN ONE PORT IN CLEAR.LIST FOUND># /usr/bin/cat $SRV_TMP_DIR/clear.list |while read line do clear_vm_port=$(($line)) /bin/echo "FOUND PORT $clear_vm_port IN CLEAN.LIST. TRY NETSTAT" \ "CHECK FOR PORT=$clear_vm_port" #<NETSTAT LISTEN CHECK FOR PORT FROM CLEAN.LIST># if /usr/bin/netstat -lnt |/usr/bin/grep ":$clear_vm_port" > /dev/null then /bin/echo "$clear_vm_port IS LISTEN" #<PORT IS LISTEN. CHECK FOR IS CONNECTED NOW># if /usr/bin/netstat -nt |/usr/bin/grep ":$clear_vm_port" \ |/usr/bin/grep "ESTABLISHED" > /dev/null then #<PORT LISTEN AND ALREADY CONNECTED! MOVE PORT FROM CLEAR.LIST # TO WASTE.LIST># /bin/echo "$clear_vm_port IS ALREADY CONNECTED, MOVE PORT TO WASTE.LIST" /usr/bin/sed -i "/$clear_vm_port/d" $SRV_TMP_DIR/clear.list /usr/bin/echo $clear_vm_port >> $SRV_TMP_DIR/waste.list else #<PORT LISTEN AND NO ONE CONNECT NOW. MOVE PORT FROM CLEAR.LIST TO # CONN_WAIT.LIST AND CREATE IPTABLES RULES>## /usr/bin/echo "OK, $clear_vm_port IS NOT ALREADY CONNECTED" /usr/bin/sed -i "/$clear_vm_port/d" $SRV_TMP_DIR/clear.list /usr/bin/echo $clear_vm_port >> $SRV_TMP_DIR/conn_wait.list $SRV_SCRIPTS_DIR/vm_connect.sh $clear_vm_port #<TRY TO CLEAN VM IN WASTE.LIST AND CREATE NEW WM># /bin/echo "TRY TO CLEAN VM IN WASTE.LIST AND CREATE NEW VM" make_housekeeper /usr/bin/echo "# $date STOP EXECUTE VM_MANAGER.SH#" exit fi else #<PORT IS NOT A LISTEN. MOVE PORT FROM CLEAR.LIST TO WASTE.LIST># /bin/echo " "$clear_vm_port" is NOT LISTEN. REMOVE PORT FROM CLEAR.LIST" /usr/bin/sed -i "/$clear_vm_port/d" $SRV_TMP_DIR/clear.list /usr/bin/echo $clear_vm_port >> $SRV_TMP_DIR/waste.list make_housekeeper fi done fi } make_housekeeper() { /usr/bin/echo "=Execute housekeeper=" /usr/bin/cat $SRV_TMP_DIR/waste.list |while read line do /usr/bin/echo "$line" if /usr/bin/netstat -lnt |/usr/bin/grep ":$line" > /dev/null then /bin/echo "port_alive, vm is running" if /usr/bin/netstat -nt |/usr/bin/grep ":$line" \ |/usr/bin/grep "ESTABLISHED" > /dev/null then /bin/echo "port_in_use can't delete vm!!!" else /bin/echo "port_not in use. Deleting vm" /usr/bin/sed -i "/$line/d" $SRV_TMP_DIR/waste.list /usr/bin/echo $line >> $SRV_TMP_DIR/recycle.list $SRV_SCRIPTS_DIR/vm_delete.sh $line fi else /usr/bin/echo "posible vm is already off. Deleting vm" /usr/bin/echo "MOVE VM IN OFF STATE $line FROM WASTE.LIST TO" \ "RECYCLE.LIST AND DELETE VM" /usr/bin/sed -i "/$line/d" $SRV_TMP_DIR/waste.list /usr/bin/echo $line >> $SRV_TMP_DIR/recycle.list $SRV_SCRIPTS_DIR/vm_delete.sh "$line" fi done create_clear_vm } create_clear_vm() { /usr/bin/echo "=Create new VM=" while [ $SRV_POOL_SIZE -gt 0 ] do new_vm_port=$(($SRV_START_PORT_POOL+$SRV_POOL_SIZE)) /usr/bin/echo "new_vm_port=$new_vm_port" if /usr/bin/grep "$new_vm_port" $SRV_TMP_DIR/clear.list > /dev/null then /usr/bin/echo "$new_vm_port port is already defined in clear.list" else if /usr/bin/grep "$new_vm_port" $SRV_TMP_DIR/waste.list > /dev/null then /usr/bin/echo "$new_vm_port port is already defined in waste.list" else if /usr/bin/grep "$new_vm_port" $SRV_TMP_DIR/recycle.list > /dev/null then /usr/bin/echo "$new_vm_port PORT IS ALREADY DEFINED IN RECYCLE LIST" else if /usr/bin/grep "$new_vm_port" $SRV_TMP_DIR/conn_wait.list > /dev/null then /usr/bin/echo "$new_vm_port PORT IS ALREADY DEFINED IN CONN_WAIT LIST" else /usr/bin/echo "PORT IN NOT DEFINED IN NO ONE LIST WILL CREATE" \ "VM ON PORT $new_vm_port" /usr/bin/echo $new_vm_port >> $SRV_TMP_DIR/recycle.list $SRV_SCRIPTS_DIR/vm_create.sh $new_vm_port fi fi fi fi SRV_POOL_SIZE=$(($SRV_POOL_SIZE-1)) done /usr/bin/echo "# $date STOP EXECUTE VM_MANAGER.SH #" } make_connect_to_vm |/usr/bin/tee -a /var/log/vm_manager.log 


/etc/vm_manager.conf
srv_scripts_dir = / home / admin / script_vdi_new
srv_pool_size = 4
srv_start_port_pool = 5920
srv_tmp_dir = / tmp / vm_state
base_host = win10_2
input_iface = enp5s0
vdi_spice_port = 5906
count_conn_tryes = 10


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ vm_manager.conf рдХреЗ рдЪрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг
srv_scripts_dir - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рди рдлрд╝реЛрд▓реНрдбрд░ vm_manager.sh, vm_connect.sh, vm_delete.sh, vm_create.sh, vm_clear.sh
srv_pool_size - Vm рдкреВрд▓ рдЖрдХрд╛рд░
srv_start_port_pool - рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЛрд░реНрдЯ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╕рд╛рд▓рд╛ рдкреЛрд░реНрдЯ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ
srv_tmp_dir - рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░
base_host - рдмреЗрд╕ Vm (рдЧреЛрд▓реНрдбрди рдЗрдореЗрдЬ) рдЬрд┐рд╕рдореЗрдВ рд╕реЗ Vm рдХреНрд▓реЛрди рдкреВрд▓ рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ
input_iface - рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреА рдУрд░ рджреЗрдЦрддреЗ рд╣реБрдП, рд╕рд░реНрд╡рд░ рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕
vdi_spice_port - рд╕рд░реНрд╡рд░ рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рд░рд┐рдореЛрдЯ-рд╡реНрдпреВрдЕрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЪрдпрдирд┐рдд Vm рдХреЗ рдорд╕рд╛рд▓рд╛ рдкреЛрд░реНрдЯ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
count_conn_tryes - рдПрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЯрд╛рдЗрдорд░, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ Vm рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, vm_connect.sh рджреЗрдЦреЗрдВ)

Vm_manager.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ vm_manager.conf рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдкреВрд▓ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН: рдХрд┐рддрдиреЗ рд╡реАрдПрдо рддреИрдирд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдореБрдлреНрдд рд╡реАрдкреАрдПрди рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣ clear.list рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ "рдирд╡ рдирд┐рд░реНрдорд┐рдд" (рдиреАрдЪреЗ рд╡реАрдПрдо рдирд┐рд░реНрдорд╛рдг рдЪрдХреНрд░ рджреЗрдЦреЗрдВ) рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ "рд╕реНрдкрд╛рдЗрд╕_рдХреЙрди рдХрдВрд╕реЛрд▓" рдкреЛрд░реНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдкреЛрд░реНрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ waste.list рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдкрд╣рд▓рд╛ рдкреЛрд░реНрдЯ рд╕реНрдкрд╖реНрдЯ.рд╕реВрдЪреА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИ, vm_manager .sh vm_connect.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкреЛрд░реНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ред

/home/admin/scripts_vdi_new/vm_connect.sh
 #!/bin/sh date=$(/usr/bin/date) /usr/bin/echo "#" "$date" "START EXECUTE VM_CONNECT.SH#" #<SET LOCAL VARIABLES FOR SCRIPT># free_port="$1" input_iface=$(/usr/bin/cat /etc/vm_manager.conf |/usr/bin/grep "input_iface" \ |/usr/bin/cut -d "=" -f2) /usr/bin/echo "input_iface=$input_iface" vdi_spice_port=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "vdi_spice_port" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "vdi_spice_port=$vdi_spice_port" count_conn_tryes=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "count_conn_tryes" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "count_conn_tryes=$count_conn_tryes" #</SET LOCAL VARIABLES FOR SCRIPT># #<CREATE IPTABLES RULES AND SEND SIGNAL TO CONNECT># /usr/bin/echo "create rule for port" $free_port /usr/sbin/iptables -I INPUT -i $input_iface -p tcp -m tcp --dport \ $free_port -j ACCEPT /usr/sbin/iptables -I OUTPUT -o $input_iface -p tcp -m tcp --sport \ $free_port -j ACCEPT /usr/sbin/iptables -t nat -I PREROUTING -p tcp -i $input_iface --dport \ $vdi_spice_port -j DNAT --to-destination 127.0.0.1:$free_port /usr/bin/echo "RULE ADDED, CONNECT NOW!" #</CREATE IPTABLES RULES AND SEND SIGNAL TO CONNECT># #<WAIT CONNECT ESTABLISHED AND ACTIVATE CONNECT TIMER># while [ $count_conn_tryes -gt 0 ] do if /usr/bin/netstat -nt |/usr/bin/grep ":$free_port" \ |/usr/bin/grep "ESTABLISHED" > /dev/null then /bin/echo "$free_port NOW in use!!!" /usr/bin/sleep 1s /usr/sbin/iptables -t nat -D PREROUTING -p tcp -i $input_iface --dport \ $vdi_spice_port -j DNAT --to-destination 127.0.0.1:$free_port /usr/sbin/iptables -D INPUT -i $input_iface -p tcp -m tcp --dport \ $free_port -j ACCEPT /usr/sbin/iptables -D OUTPUT -o $input_iface -p tcp -m tcp --sport \ $free_port -j ACCEPT /usr/bin/sed -i "/$free_port/d" $SRV_TMP_DIR/conn_wait.list /usr/bin/echo $free_port >> $SRV_TMP_DIR/waste.list return else /usr/bin/echo "$free_port NOT IN USE" /usr/bin/echo "RULE ADDED, CONNECT NOW!" /usr/bin/sleep 1s fi count_conn_tryes=$((count_conn_tryes-1)) done #</WAIT CONNECT ESTABLISED AND ACTIVATE CONNECT TIMER># #<IF COUNT HAS EXPIRED. REMOVE IPTABLES RULE AND REVERT \ # VM TO CLEAR.LIST># /usr/bin/echo "REVERT IPTABLES RULE AND REVERT VM TO CLEAN \ LIST $free_port" /usr/sbin/iptables -t nat -D PREROUTING -p tcp -i $input_iface --dport \ $vdi_spice_port -j DNAT --to-destination 127.0.0.1:$free_port /usr/sbin/iptables -D INPUT -i $input_iface -p tcp -m tcp --dport $free_port \ -j ACCEPT /usr/sbin/iptables -D OUTPUT -o $input_iface -p tcp -m tcp --sport \ $free_port -j ACCEPT /usr/bin/sed -i "/$free_port/d" $SRV_TMP_DIR/conn_wait.list /usr/bin/echo $free_port >> $SRV_TMP_DIR/clear.list #</COUNT HAS EXPIRED. REMOVE IPTABLES RULE AND REVERT VM \ #TO CLEAR.LIST># /usr/bin/echo "#" "$date" "END EXECUTE VM_CONNECT.SH#" # Attention! Must Be! sysctl net.ipv4.conf.all.route_localnet=1 


Vm_connect.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИ рдЬреЛ enp5s0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдХреЗ рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ "vdi_spice_port" рдХреЛ lo09 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕реНрдерд┐рдд VM рдХреЗ "рд╕реНрдкрд╛рдЗрд╕ рдХрдВрд╕реЛрд▓ рдкреЛрд░реНрдЯ" рдореЗрдВ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдкреЛрд░реНрдЯ рдХреЛ con_wait.list рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, VM рдХреЛ рд▓рдВрдмрд┐рдд рдХрдиреЗрдХреНрд╢рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред RULE ADDED, CONNECT Now рд▓рд╛рдЗрди рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рди рд╕рддреНрд░ рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ "рд╕рд┐рдЧреНрдирд▓" рдкреЛрд░реНрдЯ рдкрд░ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рд░рд┐рдореЛрдЯ рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдПрдХ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рддреАрдХреНрд╖рд╛ рдЪрдХреНрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд░ "count_conn_tryes" рдХреЗ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред Nc рд╕реЗрд╢рди рдореЗрдВ рд╣рд░ рд╕реЗрдХрдВрдб, тАЬRULE ADDED, CONNECT NOWтАЭ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреА рдЬрд╛рдПрдЧреА рдФрд░ тАЬspice_consoleтАЭ рдкреЛрд░реНрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕реЗрдЯ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛, рддреЛ spice_console рдкреЛрд░реНрдЯ рд╡рд╛рдкрд╕ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред vm_connect.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, vm_manager.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдлрд╛рдИ рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреЗрд╢рди lo0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ spice_console рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рдЬреЛ рдорд╕рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рдФрд░ spice_console рдкреЛрд░реНрдЯ рдХреЗ рдмреАрдЪ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, spice_console рдкреЛрд░реНрдЯ рдкрд░ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред Spice_console рдкреЛрд░реНрдЯ рдХреЛ waste.list рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, VM рдХреЛ рдЧрдВрджрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдлрд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡рдЪреНрдЫ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреЗ рдкреВрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред Vm_connect.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, vm_manager.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдлрд╛рдИ рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рд╕рдлрд╛рдИ рдЪрдХреНрд░ рдмреЗрдХрд╛рд░.рд╕реВрдЪреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдХрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкреЛрд░реНрдЯреНрд╕ рдХреЗ spice_console рдирдВрдмрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реВрдЪреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╕рд╛рд▓рд╛_рдХреЛрди рдкреЛрд░реНрдЯ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЕрдм рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдкреЛрд░реНрдЯ рдХреЛ recycle.list рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкреЛрд░реНрдЯ рд╢реБрд░реВ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдкреЛрд░реНрдЯ рдкрд░ рдПрдХ рд╕рдХреНрд░рд┐рдп рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдкреЛрд░реНрдЯ рдХреЛ рдЯреИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ VM рдмрдВрдж рд╣реИ рдФрд░ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреЛрд░реНрдЯ рдХреЛ рд░реАрд╕рд╛рдпрдХрд▓.рд▓рд┐рд╕реНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, vm_delete.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП "spice_console" рдирдВрдмрд░ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ VM рдкреЛрд░реНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред

/home/admin/scripts_vdi_new/vm_delete.sh
 #!/bin/sh #<Set local VARIABLES># port_to_delete="$1" date=$(/usr/bin/date) #</Set local VARIABLES># /usr/bin/echo "# $date START EXECUTE VM_DELETE.SH#" /usr/bin/echo "TRY DELETE VM ON PORT: $vm_port" #<VM NAME SETUP># vm_name_part1=$(/usr/bin/cat /etc/vm_manager.conf |/usr/bin/grep 'base_host' \ |/usr/bin/cut -d'=' -f2) vm_name=$(/usr/bin/echo "$vm_name_part1""-""$port_to_delete") #</VM NAME SETUP># #<SHUTDOWN AND DELETE VM># /usr/bin/virsh destroy $vm_name /usr/bin/virsh undefine $vm_name /usr/bin/rm -f /var/lib/libvirt/images_write/$vm_name.qcow2 /usr/bin/sed -i "/$port_to_delete/d" $SRV_TMP_DIR/recycle.list #</SHUTDOWN AND DELETE VM># /usr/bin/echo "VM ON PORT $vm_port HAS BEEN DELETE AND REMOVE" \ "FROM RECYCLE.LIST. EXIT FROM VM_DELETE.SH" /usr/bin/echo "# $date STOP EXECUTE VM_DELETE.SH#" exit 


рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рд╣рдЯрд╛рдирд╛ рдХрд╛рдлреА рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ, vm_delete.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдкреЛрд░реНрдЯ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред VM рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, VM рдХреЛ рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ VM рдХреА рд╡рд░реНрдЪреБрдЕрд▓ рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Spice_console рдкреЛрд░реНрдЯ рдХреЛ recycle.list рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Vm_delete.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, vm_manager.sh рд░рд┐рдЬреНрдпреВрдореЗ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛрддрд╛ рд╣реИ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ vm_manager.sh, рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд┐рд╕реНрдЯ рдмреЗрдХрд╛рд░ рдХреА рд╕реВрдЪреА рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд▓ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдмрдирд╛рдиреЗ рдХрд╛ рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рддреА рд╣реИред

рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдорд╕рд╛рд▓рд╛_рдХреЛрди рдкреЛрд░реНрдЯ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ "srv_start_port_pool" рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ рдкреВрд▓ "рд╕реНрдкрд╛рдЗрд╕_рдХреЛрдирд╕реЛрд▓" рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдкреЛрд░реНрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ "srv_pool_size" рдкреИрд░рд╛рдореАрдЯрд░, рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреЛрд░реНрдЯ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ enumerated рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП, рдпрд╣ clear.list, waste.list, conn_wait.list, recycle.list рдореЗрдВ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреЛрд░реНрдЯ рдХреЛ рд╡реНрдпрд╕реНрдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд░реАрд╕рд╛рдпрдХрд▓.рд▓рд┐рд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, vm_create.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡рд╣ рдкреЛрд░реНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдЬрд┐рд╕ VM рдХреЛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕ рдкреЛрд░реНрдЯ рдХреА spice_console рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

/home/admin/scripts_vdi_new/vm_create.sh
 #!/bin/sh /usr/bin/echo "#" "$date" "START RUNNING VM_CREATE.SH#" new_vm_port=$1 date=$(/usr/bin/date) a=0 /usr/bin/echo SRV_TMP_DIR=$SRV_TMP_DIR #<SET LOCAL VARIABLES FOR SCRIPT># base_host=$(/usr/bin/cat /etc/vm_manager.conf |/usr/bin/grep "base_host" \ |/usr/bin/cut -d "=" -f2) /usr/bin/echo "base_host=$base_host" #</SET LOCAL VARIABLES FOR SCRIPT># hdd_image_locate() { /bin/echo "Run STEP 1 - hdd_image_locate" hdd_base_image=$(/usr/bin/virsh dumpxml $base_host \ |/usr/bin/grep "source file" |/usr/bin/grep "qcow2" |/usr/bin/head -n 1 \ |/usr/bin/cut -d "'" -f2) if [ -z "$hdd_base_image" ] then /bin/echo "base hdd image not found!" else /usr/bin/echo "hdd_base_image found is a $hdd_base_image. Run next step 2" #< CHECK FOR SNAPSHOT ON BASE HDD ># if [ 0 -eq `/usr/bin/qemu-img info "$hdd_base_image" | /usr/bin/grep -c "Snapshot"` ] then /usr/bin/echo "base image haven't snapshot, run NEXT STEP 3" else /usr/bin/echo "base hdd image have a snapshot, can't use this image" exit fi #</ CHECK FOR SNAPSHOT ON BASE HDD ># #< CHECK FOR HDD IMAGE IS LINK CLONE ># if [ 0 -eq `/usr/bin/qemu-img info "$hdd_base_image" |/usr/bin/grep -c "backing file" then /usr/bin/echo "base image is not a linked clone, NEXT STEP 4" /usr/bin/echo "Base image check complete!" else /usr/bin/echo "base hdd image is a linked clone, can't use this image" exit fi fi #</ CHECK FOR HDD IMAGE IS LINK CLONE ># cloning } cloning() { # <Step_1 turn the base VM off ># /usr/bin/virsh shutdown $base_host > /dev/null 2>&1 # </Step_1 turn the base VM off ># #<Create_vm_config># /usr/bin/echo "Free port for Spice VM is $new_vm_port" #<Setup_name_for_new_VM># new_vm_name=$(/bin/echo $base_host"-"$new_vm_port) #</Setup_name_for_new_VM># #<Make_base_config_as_clone_base_VM># /usr/bin/virsh dumpxml $base_host > $SRV_TMP_DIR/$new_vm_name.xml #<Make_base_config_as_clone_base_VM># ##<Setup_New_VM_Name_in_config>## /usr/bin/sed -i "s%<name>$base_host</name>%<name>$new_vm_name</name>%g" $SRV_TMP_DIR/$new_vm_name.xml #</Setup_New_VM_Name_in_config># #<UUID Changing># old_uuid=$(/usr/bin/cat $SRV_TMP_DIR/$new_vm_name.xml |/usr/bin/grep "<uuid>") /usr/bin/echo old UUID $old_uuid new_uuid_part1=$(/usr/bin/echo "$old_uuid" |/usr/bin/cut -d "-" -f 1,2) new_uuid_part2=$(/usr/bin/echo "$old_uuid" |/usr/bin/cut -d "-" -f 4,5) new_uuid=$(/bin/echo $new_uuid_part1"-"$new_vm_port"-"$new_uuid_part2) /usr/bin/echo $new_uuid /usr/bin/sed -i "s%$old_uuid%$new_uuid%g" $SRV_TMP_DIR/$new_vm_name.xml #</UUID Changing># #<Spice port replace># old_spice_port=$(/usr/bin/cat $SRV_TMP_DIR/$new_vm_name.xml \ |/usr/bin/grep "graphics type='spice' port=") /bin/echo old spice port $old_spice_port new_spice_port=$(/usr/bin/echo "<graphics type='spice' port='$new_vm_port' autoport='no' listen='127.0.0.1'>") /bin/echo $new_spice_port /usr/bin/sed -i "s%$old_spice_port%$new_spice_port%g" $SRV_TMP_DIR/$new_vm_name.xml #</Spice port replace># #<MAC_ADDR_GENERATE># mac_new=$(/usr/bin/hexdump -n6 -e '/1 ":%02X"' /dev/random|/usr/bin/sed s/^://g) /usr/bin/echo New Mac is $mac_new #</MAC_ADDR_GENERATE># #<GET OLD MAC AND REPLACE># mac_old=$(/usr/bin/cat $SRV_TMP_DIR/$new_vm_name.xml |/usr/bin/grep "mac address=") /usr/bin/echo old mac is $mac_old /usr/bin/sed -i "s%$mac_old%$mac_new%g" $SRV_TMP_DIR/$new_vm_name.xml #<GET OLD MAC AND REPLACE># #<new_disk_create># /usr/bin/qemu-img create -f qcow2 -b $hdd_base_image /var/lib/libvirt/images_write/$new_vm_name.qcow2 #</new_disk_create># #<attach_new_disk_in_confiig># /usr/bin/echo hdd base image is $hdd_base_image /usr/bin/sed -i "s%<source file='$hdd_base_image'/>%<source file='/var/lib/libvirt/images_write/$new_vm_name.qcow2'/>%g" $SRV_TMP_DIR/$new_vm_name.xml #</attach_new_disk_in_confiig># starting_vm #</Create_vm config># } starting_vm() { /usr/bin/virsh define $SRV_TMP_DIR/$new_vm_name.xml /usr/bin/virsh start $new_vm_name while [ $a -ne 1 ] do if /usr/bin/virsh list --all |/usr/bin/grep "$new_vm_name" |/usr/bin/grep "running" > /dev/null 2>&1 then a=1 /usr/bin/sed -i "/$new_vm_port/d" $SRV_TMP_DIR/recycle.list /usr/bin/echo $new_vm_port >> $SRV_TMP_DIR/clear.list /usr/bin/echo "#" "$date" "VM $new_vm_name IS STARTED #" else /usr/bin/echo "#VM $new_vm_name is not ready#" a=0 /usr/bin/sleep 2s fi done /usr/bin/echo "#$date EXIT FROM VM_CREATE.SH#" exit } hdd_image_locate 


рдПрдХ рдирдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛

Vm_create.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдЪрд░ "base_host" рдХрд╛ рдорд╛рди рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирдореВрдирд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд▓реЛрди рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд╝рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ VM рдХреЗ xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, VM рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдХреЗ рдЪреЗрдХреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рдирдП VM рдХреЗ рд▓рд┐рдП xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдирдП VM рдХреА "рд▓рд┐рдВрдХреНрдб рдХреНрд▓реЛрди" рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдмрдирд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдирдП VM рдХрд╛ xml рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╣рд╛рдЗрдкрд░рд╡рд┐рдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ VM рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред Spice_console рдкреЛрд░реНрдЯ рдХреЛ recycle.list рд╕реЗ clear.list рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Vm_create.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ vm_manager.sh рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдХрд┐рдЯ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ vm_clear.sh рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдкреВрд▓ рд╕реЗ рд╕рднреА рд╡реАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрдмрд░рди рдЪрд▓рддреА рд╣реИ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред рдЗрд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╡реАрдбреАрдЖрдИ (рдЕрдВрдбрд░) рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

/home/admin/scripts_vdi_new/vm_clear.sh
 #!/usr/bin/sh #set VARIABLES# SRV_SCRIPTS_DIR=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_scripts_dir" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "SRV_SCRIPTS_DIR=$SRV_SCRIPTS_DIR" export SRV_SCRIPTS_DIR=$SRV_SCRIPTS_DIR SRV_TMP_DIR=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_tmp_dir" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "SRV_TMP_DIR=$SRV_TMP_DIR" export SRV_TMP_DIR=$SRV_TMP_DIR SRV_POOL_SIZE=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_pool_size" |/usr/bin/cut -d "=" -f2) /usr/bin/echo "SRV_POOL_SIZE=$SRV_POOL_SIZE" SRV_START_PORT_POOL=$(/usr/bin/cat /etc/vm_manager.conf \ |/usr/bin/grep "srv_start_port_pool" |/usr/bin/cut -d "=" -f2) /usr/bin/echo SRV_START_PORT_POOL=$SRV_START_PORT_POOL #Set VARIABLES# /usr/bin/echo "= Cleanup ALL VM=" /usr/bin/mkdir $SRV_TMP_DIR /usr/sbin/service iptables restart /usr/bin/cat /dev/null > $SRV_TMP_DIR/clear.list /usr/bin/cat /dev/null > $SRV_TMP_DIR/waste.list /usr/bin/cat /dev/null > $SRV_TMP_DIR/recycle.list /usr/bin/cat /dev/null > $SRV_TMP_DIR/conn_wait.list port_to_delete=$(($SRV_START_PORT_POOL+$SRV_POOL_SIZE)) while [ "$port_to_delete" -gt "$SRV_START_PORT_POOL" ] do $SRV_SCRIPTS_DIR/vm_delete.sh $port_to_delete port_to_delete=$(($port_to_delete-1)) done /usr/bin/echo "= EXIT FROM VM_CLEAR.SH=" 


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

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


All Articles