เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฌเฉ‹เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš

เจ…เจ•เจธเจฐ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจœเจฆเฉ‹เจ‚ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ€ เจ‡เฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจนเฉเจฃ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, SSH เจฐเจพเจนเฉ€เจ‚ เจœเฉเฉœเจจเจพ เจนเจฎเฉ‡เจธเจผเจพ เจธเจญ เจคเฉ‹เจ‚ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ SSH เจ•เจฒเจพเจ‡เฉฐเจŸ, เจธเจฐเจตเจฐ เจชเจคเจพ, เจœเจพเจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ/เจชเจพเจธเจตเจฐเจก เจธเฉเจฎเฉ‡เจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ• เจนเฉˆ เจตเฉˆเจฎเฉ€เจจเจฎ, เจœเฉ‹ เจชเฉเจฐเจธเจผเจพเจธเจจ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน เจคเฉเจฐเฉฐเจค เจชเจนเฉเฉฐเจš เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจชเจฐ เจฆเจฟเจฒเจšเจธเจช เจนเฉฑเจฒ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ. เจ…เจฐเจฅเจพเจค, เจ‡เฉฑเจ• เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฌเฉ‹เจŸ เจฒเจฟเจ–เจฃ เจฒเจˆ, เจœเฉ‹ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจฒเจพเจ‚เจš เจนเฉ‹เจฃ 'เจคเฉ‡, เจ‡เจธ เจจเฉ‚เฉฐ เจญเฉ‡เจœเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจ•เจฐเฉ‡เจ—เจพเฅค เจฆเฉ€ เจชเฉœเฉเจนเจพเจˆ เจ•เฉ€เจคเฉ€ เจนเฉˆ เจ•เจˆ เจฒเฉ‡เจ– เจ‡เจธ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡, เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ•เจฟเจธเฉ‡ เจจเฉ‡ เจตเฉ€ เจ…เจœเจฟเจนเฉ‡ เจ…เจฎเจฒเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉˆเฅค

เจฎเฉˆเจ‚ เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ‰เจฌเฉฐเจŸเฉ‚ 16.04 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ, เจชเจฐ เจนเฉ‹เจฐ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจฎเฉเจธเจผเจ•เจฒ เจฐเจนเจฟเจค เจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจ†เจฎ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€เฅค

เจฌเฉ‹เจŸ เจฐเจœเจฟเจธเจŸเฉเจฐเฉ‡เจธเจผเจจ

@BotFather เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฌเฉ‹เจŸ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเฉ‹เฅค เจ…เจธเฉ€เจ‚ เจ‰เจธเจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚ /newbot เจ…เจคเฉ‡ เจ…เฉฑเจ—เฉ‡ เจชเจพเจ  เจตเจฟเฉฑเจš. เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจฌเฉ‹เจŸ เจŸเฉ‹เจ•เจจ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ€ เจ†เจˆเจกเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€ (เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉ‹เจ‚ @userinfobot).

เจชเจพเจˆเจฅเจจ เจฆเฉ€ เจคเจฟเจ†เจฐเฉ€

เจฌเฉ‹เจŸ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ telebot (pip install pytelegrambotapi). เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ subprocess เจ…เจธเฉ€เจ‚ เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจšเจฒเจพเจตเจพเจ‚เจ—เฉ‡เฅค

เจฌเฉ‹เจŸ เจฒเจพเจ‚เจš

เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• bot.py เจซเจพเจˆเจฒ เจฌเจฃเจพเจ“:
nano bot.py

เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจชเฉ‡เจธเจŸ เจ•เจฐเฉ‹:

from subprocess import check_output
import telebot
import time

bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")#ั‚ะพะบะตะฝ ะฑะพั‚ะฐ
user_id = 0 #id ะฒะฐัˆะตะณะพ ะฐะบะบะฐัƒะฝั‚ะฐ
@bot.message_handler(content_types=["text"])
def main(message):
   if (user_id == message.chat.id): #ะฟั€ะพะฒะตั€ัะตะผ, ั‡ั‚ะพ ะฟะธัˆะตั‚ ะธะผะตะฝะฝะพ ะฒะปะฐะดะตะปะตั†
      comand = message.text  #ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
      try: #ะตัะปะธ ะบะพะผะฐะฝะดะฐ ะฝะตะฒั‹ะฟะพะปะฝัะตะผะฐั - check_output ะฒั‹ะดะฐัั‚ exception
         bot.send_message(message.chat.id, check_output(comand, shell = True))
      except:
         bot.send_message(message.chat.id, "Invalid input") #ะตัะปะธ ะบะพะผะฐะฝะดะฐ ะฝะตะบะพั€ั€ะตะบั‚ะฝะฐ
if __name__ == '__main__':
    while True:
        try:#ะดะพะฑะฐะฒะปัะตะผ try ะดะปั ะฑะตัะฟะตั€ะตะฑะพะนะฝะพะน ั€ะฐะฑะพั‚ั‹
            bot.polling(none_stop=True)#ะทะฐะฟัƒัะบ ะฑะพั‚ะฐ
        except:
            time.sleep(10)#ะฒ ัะปัƒั‡ะฐะต ะฟะฐะดะตะฝะธั

เจ…เจธเฉ€เจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจฌเฉ‹เจŸ เจŸเฉ‹เจ•เจจ เจจเฉ‚เฉฐ @BotFather เจฆเฉเจ†เจฐเจพ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจ—เจ เจŸเฉ‹เจ•เจจ เจจเจพเจฒ เจ…เจคเฉ‡ user_id เจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ‡ เจ–เจพเจคเฉ‡ เจฆเฉ‡ id เจฎเฉเฉฑเจฒ เจจเจพเจฒ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ†เจˆเจกเฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจฌเฉ‹เจŸ เจคเฉเจนเจพเจกเฉ‡ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเฉ‡. เจซเฉฐเจ•เจธเจผเจจ check_output() เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจธเจฟเจฐเจซ เจฌเฉ‹เจŸ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆ. เจธเจฐเจตเจฐ 'เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฒเจˆ, เจฎเฉˆเจ‚ เจตเจฐเจคเจฃเจพ เจชเจธเฉฐเจฆ เจ•เจฐเจฆเจพ เจนเจพเจ‚ screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(เจœเจฟเฉฑเจฅเฉ‡ "เจธเจฐเจตเจฐเจฌเฉ‹เจŸ" เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† ID เจนเฉˆ)

เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ†เจชเจฃเฉ‡ เจ†เจช เจฌเฉˆเจ•เจ—เฉเจฐเจพเจ‰เจ‚เจก เจตเจฟเฉฑเจš เจšเฉฑเจฒเฉ‡เจ—เฉ€เฅค เจ†เจ‰ เจฌเฉ‹เจŸ เจจเจพเจฒ เจธเฉฐเจตเจพเจฆ เจคเฉ‡ เจšเฉฑเจฒเฉ€เจ เจ…เจคเฉ‡ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ เจ•เจฟ เจธเจญ เจ•เฉเจ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ‡เจน เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฌเฉ‹เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš

เจตเจงเจพเจˆเจ†เจ‚! เจฌเฉ‹เจŸ เจ‡เจธ เจจเฉ‚เฉฐ เจญเฉ‡เจœเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจนเฉเจฃ, เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจฌเฉ‹เจŸ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจพเจฐเจคเจพเจฒเจพเจช เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจนเฉเจ•เจฎ เจฆเฉเจนเจฐเจพเจ“

เจ…เจ•เจธเจฐ, เจธเจฐเจตเจฐ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเฉ€ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจšเจฒเจพเจ‰เจฃเฉ€เจ†เจ‚ เจชเฉˆเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจธ เจฒเจˆ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจญเฉ‡เจœเฉ‡ เจฌเจฟเจจเจพเจ‚ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจฌเจพเจนเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ…เจธเฉ€เจ‚ เจธเฉเจจเฉ‡เจนเจฟเจ†เจ‚ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจ‡เจจเจฒเจพเจˆเจจ เจฌเจŸเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡:

from subprocess import check_output
import telebot
from telebot import types #ะ”ะพะฑะฐะฒะปัะตะผ ะธะผะฟะพั€ั‚ ะบะฝะพะฟะพะบ
import time

bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")#ะขะพะบะตะฝ ะฑะพั‚ะฐ
user_id = 0 #id ะฒะฐัˆะตะณะพ ะฐะบะบะฐัƒะฝั‚ะฐ
@bot.message_handler(content_types=["text"])
def main(message):
   if (user_id == message.chat.id): #ะฟั€ะพะฒะตั€ัะตะผ, ั‡ั‚ะพ ะฟะธัˆะตั‚ ะธะผะตะฝะฝะพ ะฒะปะฐะดะตะปะตั†
      comand = message.text  #ั‚ะตะบัั‚ ัะพะพะฑั‰ะตะฝะธั
      markup = types.InlineKeyboardMarkup() #ัะพะทะดะฐะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
      button = types.InlineKeyboardButton(text="ะŸะพะฒั‚ะพั€ะธั‚ัŒ", callback_data=comand) #ัะพะทะดะฐะตะผ ะบะฝะพะฟะบัƒ
      markup.add(button) #ะดะพะฑะฐะฒะปัะตะผ ะบะฝะพะฟะบัƒ ะฒ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
      try: #ะตัะปะธ ะบะพะผะฐะฝะดะฐ ะฝะตะฒั‹ะฟะพะปะฝัะตะผะฐั - check_output ะฒั‹ะดะฐัั‚ exception
         bot.send_message(user_id, check_output(comand, shell = True,  reply_markup = markup)) #ะฒั‹ะทั‹ะฒะฐะตะผ ะบะพะผะฐะฝะดัƒ ะธ ะพั‚ะฟั€ะฐะฒะปัะตะผ ัะพะพะฑั‰ะตะฝะธะต ั ั€ะตะทัƒะปัŒั‚ะฐั‚ะพะผ
      except:
         bot.send_message(user_id, "Invalid input") #ะตัะปะธ ะบะพะผะฐะฝะดะฐ ะฝะตะบะพั€ั€ะตะบั‚ะฝะฐ

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
  comand = call.data #ัั‡ะธั‚ั‹ะฒะฐะตะผ ะบะพะผะฐะฝะดัƒ ะธะท ะฟะพะปั ะบะฝะพะฟะบะธ data
  try:#ะตัะปะธ ะบะพะผะฐะฝะดะฐ ะฝะต ะฒั‹ะฟะพะปะฝัะตะผะฐั - check_output ะฒั‹ะดะฐัั‚ exception
     markup = types.InlineKeyboardMarkup() #ัะพะทะดะฐะตะผ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
     button = types.InlineKeyboardButton(text="ะŸะพะฒั‚ะพั€ะธั‚ัŒ", callback_data=comand) #ัะพะทะดะฐะตะผ ะบะฝะพะฟะบัƒ ะธ ะฒ data ะฟะตั€ะตะดะฐั‘ะผ ะบะพะผะฐะฝะดัƒ
     markup.add(button) #ะดะพะฑะฐะฒะปัะตะผ ะบะฝะพะฟะบัƒ ะฒ ะบะปะฐะฒะธะฐั‚ัƒั€ัƒ
     bot.send_message(user_id, check_output(comand, shell = True), reply_markup = markup) #ะฒั‹ะทั‹ะฒะฐะตะผ ะบะพะผะฐะฝะดัƒ ะธ ะพั‚ะฟั€ะฐะฒะปัะตะผ ัะพะพะฑั‰ะตะฝะธะต ั ั€ะตะทัƒะปัŒั‚ะฐั‚ะพะผ
  except:
     bot.send_message(user_id, "Invalid input") #ะตัะปะธ ะบะพะผะฐะฝะดะฐ ะฝะตะบะพั€ั€ะตะบั‚ะฝะฐ

if __name__ == '__main__':
    while True:
        try:#ะดะพะฑะฐะฒะปัะตะผ try ะดะปั ะฑะตัะฟะตั€ะตะฑะพะนะฝะพะน ั€ะฐะฑะพั‚ั‹
            bot.polling(none_stop=True)#ะทะฐะฟัƒัะบ ะฑะพั‚ะฐ
        except:
            time.sleep(10)#ะฒ ัะปัƒั‡ะฐะต ะฟะฐะดะตะฝะธั

เจฌเฉ‹เจŸ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจเจพ:

killall python3
screen -dmS ServerBot python3 bot.py

เจ†เจ“ เจฆเฉเจฌเจพเจฐเจพ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจ เจ•เจฟ เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ:

เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฌเฉ‹เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฒเฉ€เจจเจ•เจธ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš

เจธเฉฐเจฆเฉ‡เจธเจผ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฌเจŸเจจ เจจเฉ‚เฉฐ เจฆเจฌเจพเจ‰เจฃ เจจเจพเจฒ, เจฌเฉ‹เจŸ เจจเฉ‚เฉฐ เจ‰เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจคเฉ‹เจ‚ เจ‡เจน เจธเฉเจจเฉ‡เจนเจพ เจญเฉ‡เจœเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค

เจธเฉฐเจชเฉ‚เจฐเจจ เจนเฉ‹เจฃ เจฆเฉ‡ เจฌเจœเจพเจ

เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เจน เจตเจฟเจงเฉ€ เจ•เจฒเจพเจธเจฟเจ• เจ•เจจเฉˆเจ•เจธเจผเจจ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฒเจˆ เจฌเจฆเจฒเฉ€ เจนเฉ‹เจฃ เจฆเจพ เจฆเจฟเจ–เจพเจตเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฌเจพเจฐเฉ‡ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹