рд░реВрдордореЗрдЯ рдХреИрд╕реЗ рдЦреЗрд▓реЗрдВ

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ


рдЯрдлреНрдЯреНрд╕ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдХрд╛ рдЫрд╛рддреНрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рд░реВрдордореЗрдЯ рдХреЛ рдХреИрд╕реЗ рдЫреЗрдбрд╝рдирд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рддрдм рднреА рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдХрд╣рд╛рдиреА рд╢реБрд░реВ рдХреА рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЫрд╛рддреНрд░рд╛рд╡рд╛рд╕ рдореЗрдВ 4K рдЯреАрд╡реА рд╣реИред

рдкрд░рд┐рдЪрдп


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

рд▓реЛрдЧрд╛рди, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдордЬрд╝рд╛ рдЖрдпрд╛ рдерд╛ред

рд╕реНрд╡рднрд╛рд╡


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

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЯреИрд▓реА 4K рд╣реИ, рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рд╣рд╛рде рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдирд╣реАрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИред рд▓реЛрдЧрд╛рди рдиреЗ рдкреБрд░рд╛рдиреЗ NVIDIA рд╡рд┐рджреНрдпрд╛ рдХреЛ рдЦрд░реАрджрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 4K рд╡реАрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреАрдврд╝рд┐рдпреЛрдВ рдкрд╣рд▓реЗ (рдЬреЛ рдЕрднреА рднреА рдпрд╣ рдЬрд┐рддрдирд╛ рдерд╛ рдЙрд╕рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ) рдЬрд╛рд░реА рдХрд┐рдпрд╛ред

рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЬрдиреНрдо


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

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рдЦреЛрдЬреЛрдВ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рджреВрд░ рд╕реЗ рдХрд┐рд╕реА рдЯреЗрд▓реАрд╡рд┐рдЬрди рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИ:

  1. рдкреНрд░рд╕рд╛рд░рдг рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ
  2. DISPLAY=:0 zenity --info --text '!'

DISPLAY=:0 рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд╕рддреНрд░ рдореЗрдВ рдХреЛрдИ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдВрджреЗрд╢ рдХреЛ рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪреВрдБрдХрд┐ рд╣рдореЗрдВ NVIDIA vidyuha рдХреА рд╕рдорд╕реНрдпрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░рд╣рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:

 DISPLAY=:0 zenity --warning --text '     .' 

рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рд▓реЛрдЧрд╛рди рдиреАрдЪреЗ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП SSH рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдПрдХ рдРрд╕реА рдЦреБрд╢реА рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рддрд╛рдЬ рдореЗрдВ рдЙрд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ:

  1. рджрд░рдЕрд╕рд▓, рдирд┐рдпрдорд┐рддрддрд╛
  2. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд╛рдЬ рдореЗрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдп рдереЗ, рдЬрд┐рд╕рд╕реЗ рдореЗрд░реЗ рдХрдкрдЯрдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЦрддрд░рд╛ рдмрдврд╝ рдЧрдпрд╛

рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬреИрд╕реЗ SysVInit рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЙрдиреНрд╣реАрдВ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрдЯрди "рд╣реИ рд▓реЛрдЧрд╛рди" рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реЗрдм рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рддреИрдпрд╛рд░реА рдХрд░реЗрдВ


рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ
  2. рдПрдХ рд╡реЗрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдордирдорд╛рдирд╛ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ

рддреЛ рдореИрдВ рдЖрдпрд╛:

  1. nginx
  2. рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдлрдкреАрдПрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди
  3. рдкреАрдПрдЪрдкреА
  4. PHP рдХреЗ рд▓рд┐рдП FPM рдкреИрдХреЗрдЬ

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ logan.html logan.html рдкреГрд╖реНрда рдФрд░ "рдПрдХреНрд╢рди рдкреЗрдЬ" zenity.php рд╕рд╛рде рдПрдХ рд╕рд╛рдЗрдЯ рдмрдирд╛рдИ:

logan.html
 <!-- logan.html --> <html> <head> <style type="text/css"> form button { font-size: 20px; } div.explanation { width: 400px; } </style> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="HandheldFriendly" content="true"> </head> <body> <form method="POST" action="/zenity.php"> <button> </button> </form> </body> </html> 

рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП meta рдЯреИрдЧ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрдХрд╡рд╛рд╕ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореБрдЭреЗ рдЪрд▓рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ?) рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореИрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ POST рдЕрдиреБрд░реЛрдз рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рдЙрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рднреА рдЧрдВрджреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

zenity.php
 <?php /* zenity.php */ $messages = Array( " .", " .", " .", " .", " .", " .", "       .", "   .", "   .", "   .", "    and has recovered.", "     .", "     .", "     .", "     .", "     .", "     .", " NVIDIA  .", "NVIDIA    - . ( 43)", "    wlx10bef54d395c." ); $statuses = Array("error", "warning"); $msg = $messages[array_rand($messages)]; $status = $statuses[array_rand($statuses)]; $timeout = "--timeout 10"; exec("sudo -u thedisplayuser /usr/sbin/zenity --$status --display=:0 --text ': $msg' $timeout > /dev/null &"); include 'logan.html'; ?> <div class="explanation">                ,       .   ,        // .. </div> <br /> <img src='/logan.jpg' /> 

рдпрд╣ рдкреГрд╖реНрда рдХрдИ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  1. рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ
  2. рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред
  3. рд╕рдордп рдХреА рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ (10 рд╕реЗрдХрдВрдб) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
  4. рд╡рд╣ рдПрдХ рдмрдЯрди рдЦреАрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ - рд╕рднреА рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд▓реЛрдЧрди рдХреА рдордЬреЗрджрд╛рд░ рддрд╕реНрд╡реАрд░ рдХреЗ рд╕рд╛рде

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рднреА рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдлрд┐рд░, рдЙрдореНрдореАрдж рд╣реИ, рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ), рдкреГрд╖реНрда рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдпрджрд┐ рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡реЗрдм рдкреЗрдЬ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреНрдпреЛрдВ рд╣реИ, рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕рддреНрд░ ( www-data ) рдХреЗ рдорд╛рд▓рд┐рдХ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ( thedisplayuser ) рдХреЗ рд░реВрдк рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред sudoers рдлрд╝рд╛рдЗрд▓:

 # /etc/sudoers www-data ALL=(thedisplayuser) NOPASSWD: /usr/bin/zenity 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рдЧ www-data рдХреЛ рдХреЗрд╡рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ thedisplayuser рдХреЗ рд░реВрдк рдореЗрдВ / usr / bin / zenity рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ PHP рдФрд░ NGINX рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмреЗрд╡рдХреВрдл рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕рд╛ рдХрд┐рдпрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдкрд░рд┐рд╕рд░ рдореЗрдВ рдХреБрдЫ рджреЛрд╕реНрддреЛрдВ рдХреЛ URL рднреЗрдЬрд╛ рдЬреЛ рд▓реЛрдЧрд╛рди рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо рдбреНрд░рд╛ рдХрд░реЗрдВ


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

рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╣реБрдд рджреВрд░ рдЪрд▓рд╛ рдЧрдпрд╛, рдФрд░ рдХреНрд░рд┐рд╕, рд╣рдорд╛рд░реЗ рджреВрд╕рд░реЗ рд░реВрдордореЗрдЯ рдиреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ ...

рд╢рд┐рдХрд╛рд░реА рдХрд╛ рд╢рд┐рдХрд╛рд░


рдкрд╣рд▓рд╛ рдЪрд░рдг


рдПрдХ рдмрдврд╝рд┐рдпрд╛ рджрд┐рди, рдЬрдм рд▓реЛрдЧрд╛рди рд╕реЛ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦрд╛ рдЬрд┐рд╕рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛: "рдореИрдХреНрд╕ рдЗрд╕ рд╕рдм рдХреЗ рдкреАрдЫреЗ рд╣реИред" Choooo? рдореБрдЭреЗ рдПрдХ рдкреНрд░реИрдВрдХрдмреЙрдХреНрд╕ рдорд┐рд▓рд╛! рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рдордЭрдиреЗ рд▓рдЧрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдХрд┐рд╕реА (рдХреНрд░рд┐рд╕) рдиреЗ рдЗрд╕ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЛ zenity.php рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ zenity.php ред рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ (рдЬрдм рддрдХ рд▓реЛрдЧрди рдиреЗ рд╕реБрдирд╛ рдХрд┐ рд╡реЗ рдЗрд╕реЗ рдЦреЗрд▓ рд░рд╣реЗ рдереЗ) рдФрд░ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдордЬрд╝рд╛ рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдпрд╣ рдерд╛

рджреВрд╕рд░рд╛ рдЪрд░рдг


рдПрдХ рдпрд╛ рджреЛ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдмрд╛рдж, рд╕рдВрджреЗрд╢ рдлрд┐рд░ рд╕реЗ рдкреЙрдк рдЕрдк рд╣реБрдЖред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдХреНрд░рд┐рд╕ рдиреЗ рдореБрдЭреЗ рдЬрд▓рд╛ рджрд┐рдпрд╛ рдФрд░ рд╕реВрдЪреА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ред рд▓рд╛рдирдд рдирд╣реАрдВ рд╣реИред рд╡рд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдерд╛ред рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЕрдм рдЗрд╕реЗ /usr/bin/zenity (рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдХреЗ рдмрдЬрд╛рдп /usr/sbin/zenity рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ sudoers рдкрд╛рд╕ рдПрдХ рдЕрдиреБрдЬреНрдЮреЗрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдереАред рддреЛ рдХреНрдпрд╛ рд╣реИ /usr/sbin/zenity ? рд╢реИрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

 #!/bin/bash echo '.' >> /tmp/log.txt if [ 0 -eq $((RANDOM % 100)) ]; then /usr/bin/zenity --error --display=:0 --text "   ." --timeout 10 > /dev/null & else /usr/bin/zenity "$@" fi 

рдЦреИрд░, рдпрд╣ рдмрдХрд╡рд╛рд╕ рдХрд╛ рдЕрдЧрд▓рд╛ рд╕реНрддрд░ рдерд╛, рдЕрдЧрд░ рдореБрдЭреЗ рдХрднреА рднреА рдРрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рд╛ред 99% рдЙрд╕ рд╕рдордп рдЬреИрд╕рд╛ рдХрд┐ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рд╢реЗрд╖ рдПрдХ рдкреНрд░рддрд┐рд╢рдд рд╕рдВрджреЗрд╢ рдореЗрдВ "рдореИрдХреНрд╕ рдкреАрдЫреЗ рдЦрдбрд╝рд╛ рд╣реИ" рдкреЙрдк рдЕрдк рд╣реБрдЖред рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рдерд╛) рдФрд░ sudoers рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ zenity.php рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдЖ рдЧрдпрд╛ред рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдмрдВрдж рд╣реЛ рдЧрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╡реЗ рд╡рд╛рдкрд╕ рдЖ рдЧрдПред

рддреАрд╕рд░рд╛ рдЪрд░рдг


рдореИрдВрдиреЗ zenity.php рдЬрд╛рдБрдЪ рдХреАред рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВред /usr/sbin/zenity ? рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рдореИрдВ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдВрджрд░ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ /usr/bin/zenity :

 #!/bin/bash # ---    --- # ---    --- # ---    --- # ---    --- # ---    --- if [ 0 -eq $((RANDOM % 70)) ]; then /usr/bin/rpmdb-client --error --display=:0 --text """"" """""" """""""""""" """"""""." --timeout 10 > /dev/null & else /usr/bin/rpmdb-client "$@" fi 

рдЫреЛрдЯреА рдзреВрд░реНрдд рдХрдореАрдиреЗред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд╝реАрдирд┐рдЯреА рдмрд╛рдЗрдирд░реА рдХреЛ рддрдп рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрди рдЧрдИ рдЬреЛ рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ 70. рдЖрдЦрд┐рд░ рдХреНрдпрд╛? рдФрд░ рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ rpmdb-client ? рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрджрд▓рдХрд░ рд▓рдбрд╝рд╛рдИ рд▓рдбрд╝реА:

 # <> if [ 0 -eq $((RANDOM % 70)) ]; then /usr/sbin/rpmdb-client --error --display=:0 --text """"" """""" """""""""""" """"""""." --timeout 10 > /dev/null & else /usr/bin/rpmdb-client "$@" fi 

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдВрддрд░ рдкрдХрдбрд╝рд╛? рдЕрдиреНрдпрдерд╛, /usr/sbin/rpmdb-client рдХреЛ /usr/bin/rpmdb-client рдмрдЬрд╛рдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд░реНрдпрд╛рдкреНрдд рднрд╛рдЧреНрдп рдХреЗ рд╕рд╛рде, рд╡рд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рд┐рддреНрд░ рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХрд╛ рд╕рдВрджреЗрд╢ рдХрднреА рднреА рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

TODO: ELF рдирд┐рд╖реНрдкрд╛рджрдХ /usr/sbin/zenity рдФрд░ /usr/bin/rpmdb-client рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭреЗрдВ рдЬреЛ рдХреНрд░рд┐рд╕ рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдореЗрдВ рдХреБрдЫ рдЕрдЬреАрдм рдЕрдВрддрд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЕрднреА рддрдХ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИред

рдЪреМрдерд╛ рдЪрд░рдг


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

  1. рд╕реВрддреНрд░реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП apt рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, /etc/apt/sources.list deb-src рдЬреЛрдбрд╝рдХрд░)
  2. apt-get source zenity
  3. quilt рд╕рд╛рде рдПрдХ рдкреИрдЪ рдмрдирд╛рдпрд╛:
    1. quilt new myPatch.diff
    2. рд╕рдВрджреЗрд╢ рдмреЙрдбреА рдореЗрдВ "рдореИрдХреНрд╕" рд╢рдмреНрдж рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ src/msg.c рд▓рд┐рдП рдПрдХ рдкреИрдЪ:

      msg.c
       Index: zenity-3.18.1.1/src/msg.c =================================================================== --- zenity-3.18.1.1.orig/src/msg.c +++ zenity-3.18.1.1/src/msg.c @@ -21,6 +21,8 @@ * Authors: Glynn Foster <glynn.foster@sun.com> */ +#include <string.h> + #include "config.h" #include "zenity.h" @@ -85,6 +87,11 @@ zenity_msg (ZenityData *data, ZenityMsgD GObject *text; GObject *image; + if (strstr(msg_data->dialog_text, "Max") + || strstr(msg_data->dialog_text, "max")) { + return; + } + switch (msg_data->mode) { case ZENITY_MSG_WARNING: builder = zenity_util_load_ui_file ("zenity_warning_dialog", NULL); 
    3. quilt add src/msg.c
    4. quilt pop
  4. dpkg-source --commit
  5. dpkg-buildpackage -us -uc
  6. рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдПрдХ рдмрд╛рдЗрдирд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреАрд▓рд╛ рд╣реИ
  7. рдЪреБрдкрдЪрд╛рдк рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде rpmdb-client (рдЗрд╕рдХреА zenity ) рдмрд╛рдЗрдирд░реА рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛
  8. рдЙрд╕рдХреА рдкреАрда рдердкрдердкрд╛рдИ

рдпрд╣ рдкреИрдЪ zenity рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ zenity рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рд╕рдВрджреЗрд╢ рдкрд╛рда рдореЗрдВ "рдореИрдХреНрд╕" рд╢рдмреНрдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪреБрдкрдЪрд╛рдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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


All Articles