เดชเตˆเดคเตเดคเดฃเดฟเดฒเต† เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดฌเต‹เดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเดฟเดจเด•เตเดธเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต

เด‡เดตเดฟเดŸเต†เดฏเตเด‚ เด‡เดชเตเดชเต‹เดณเตเด‚ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเดฎเตเดชเต‹เตพ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเตเดฃเตเดŸเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, SSH เดตเดดเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต SSH เด•เตเดฒเดฏเดจเตเดฑเต, เดธเต†เตผเดตเตผ เดตเดฟเดฒเดพเดธเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเตƒ/เดชเดพเดธเตโ€Œเดตเต‡เดกเต เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเตป เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด‰เดฃเตเดŸเต เดตเต†เดฌเตโ€Œเดฎเดฟเตป, เด‡เดคเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดทเตป เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดคเตฝเด•เตเดทเดฃ เด†เด•เตเดธเดธเต เดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เด…เดคเดฟเดจเดพเตฝ เดฒเดณเดฟเดคเดตเตเด‚ เดŽเดจเตเดจเดพเตฝ เดฐเดธเด•เดฐเดตเตเดฎเดพเดฏ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เด…เดคเดพเดฏเดคเต, เด’เดฐเต เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดฌเต‹เดŸเตเดŸเต เดŽเดดเตเดคเตเด•, เด…เดคเต เดธเต†เตผเดตเดฑเดฟเตฝ เดคเดจเตเดจเต† เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดš เด•เดฎเดพเตปเดกเตเด•เตพ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดซเดฒเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดชเด เดฟเดšเตเดšเต เด•เดดเดฟเดžเตเดžเต เดชเดฒเดคเตเด‚ เดฒเต‡เด–เดจเด™เตเด™เตพ เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ, เด…เดคเตเดคเดฐเด‚ เดจเดŸเดชเตเดชเดพเด•เตเด•เดฒเตเด•เตพ เด†เดฐเตเด‚ เด‡เดคเตเดตเดฐเต† เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เดจเตเดจเต เดžเดพเตป เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดฟ.

เด‰เดฌเตเดฃเตเดŸเต 16.04-เตฝ เดžเดพเตป เดˆ เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟ, เดŽเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต เดตเดฟเดคเดฐเดฃเด™เตเด™เดณเดฟเตฝ เดชเตเดฐเดถเตโ€Œเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดพเดฐเด‚เดญเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเดพเตป เดŽเดฒเตเดฒเดพเด‚ เดชเตŠเดคเตเดตเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเต.

เดฌเต‹เดŸเตเดŸเต เดฐเดœเดฟเดธเตเดŸเตเดฐเต‡เดทเตป

@BotFather-เตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฌเต‹เดŸเตเดŸเต เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดžเด™เตเด™เตพ เด…เดคเต เด…เดตเดจเต เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต /newbot เดตเดพเดšเด•เดคเตเดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ. เดชเตเดคเดฟเดฏ เดฌเต‹เดŸเตเดŸเดฟเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดเดกเดฟเด•เตเด•เตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดŸเต‹เด•เตเด•เตบ เด†เดตเดถเตเดฏเดฎเดพเดฃเต (เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดฒเดญเดฟเด•เตเด•เตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดคเดฟเตฝ เดจเดฟเดจเตเดจเต @usinfobot).

เดชเตˆเดคเตเดคเตบ เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเดชเตเดชเต

เดฌเต‹เดŸเตเดŸเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ 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 เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดจเตเดฑเต† เดเดกเดฟ เดฎเต‚เดฒเตเดฏเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดเดกเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด…เดคเตเดฏเดพเดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดฌเต‹เดŸเตเดŸเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดพเดคเตเดฐเด‚ เด†เด•เตเดธเดธเต เดจเตฝเด•เตเดจเตเดจเต. เดซเด‚เด—เตเดทเตป check_output() เดชเดพเดธเดพเด•เตเด•เดฟเดฏ เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดซเดฒเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดฌเต‹เดŸเตเดŸเต เดตเดฟเด•เตเดทเต‡เดชเดฟเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(เด‡เดตเดฟเดŸเต† "เดธเต†เตผเดตเตผเดฌเต‹เดŸเตเดŸเต" เดŽเดจเตเดจเดคเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดเดกเดฟเดฏเดพเดฃเต)

เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚. เดจเดฎเตเด•เตเด•เต เดฌเต‹เดŸเตเดŸเตเดฎเดพเดฏเดฟ เดธเด‚เดญเดพเดทเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚, เดŽเดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•:

เดชเตˆเดคเตเดคเดฃเดฟเดฒเต† เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดฌเต‹เดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเดฟเดจเด•เตเดธเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต

เด…เดญเดฟเดจเดจเตเดฆเดจเด™เตเด™เตพ! เดฌเต‹เดŸเตเดŸเต เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดš เด•เดฎเดพเตปเดกเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เด‡เดชเตเดชเต‹เตพ, เดธเต†เตผเดตเตผ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดฌเต‹เดŸเตเดŸเตเดฎเดพเดฏเดฟ เด’เดฐเต เดกเดฏเดฒเต‹เด—เต เดคเตเดฑเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด†เดตเตผเดคเตเดคเดฟเดšเตเดšเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ

เดชเดฒเดชเตเดชเต‹เดดเตเด‚, เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เด’เดฐเต‡ เด•เดฎเดพเตปเดกเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เดตเต€เดฃเตเดŸเตเด‚ เด…เดฏเดฏเตโ€Œเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เด‰เดšเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพเด•เตเด•เต เดคเดพเดดเต†เดฏเตเดณเตเดณ เด‡เตปเดฒเตˆเตป เดฌเดŸเตเดŸเดฃเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚:

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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•