เชเชฃเซ เชตเชพเชฐ เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช เชนเซเชฏ เชเซ เชเซเชฏเชพเชฐเซ เชธเชฐเซเชตเชฐเชจเซ เชเชเซเชธเซเชธ เช
เชนเซเช เช
เชจเซ เช
เชคเซเชฏเชพเชฐเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชเซ. เชเซ เชเซ, SSH เชฆเซเชตเชพเชฐเชพ เชเชจเซเชเซเช เชเชฐเชตเซเช เช เชนเชเชฎเซเชถเชพ เชธเซเชฅเซ เช
เชจเซเชเซเชณ เชฐเซเชค เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ SSH เชเซเชฒเชพเชฏเชเช, เชธเชฐเซเชตเชฐ เชธเชฐเชจเชพเชฎเซเช, เช
เชฅเชตเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ/เชชเชพเชธเชตเชฐเซเชก เชธเชเชฏเซเชเชจ เชนเชพเชฅ เชชเชฐ เชจ เชนเซเช เชถเชเซ. เช
เชฒเชฌเชคเซเชค เชนเซเชฏ เชเซ
เชคเซเชฅเซ เชฎเซเช เชเช เชธเชฐเชณ เชชเชฃ เชฐเชธเชชเซเชฐเชฆ เชเชเซเชฒ เช
เชฎเชฒเชฎเชพเช เชฎเซเชเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช. เชเชเชฒเซ เชเซ, เชเช เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช เชฒเชเชตเชพ เชฎเชพเชเซ เชเซ เชเซ เชธเชฐเซเชตเชฐ เชชเชฐ เช เชฒเซเชจเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ, เชคเซเชจเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซเชฒ เชเชฆเซเชถเซเชจเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชถเซ เช
เชจเซ เชชเชฐเชฟเชฃเชพเชฎ เชชเชฐเชค เชเชฐเชถเซ. เช
เชญเซเชฏเชพเชธ เชเชฐเซเชฏเซ เชเซ
เชฎเซเช เช เชชเซเชฐเซเชเซเชเซเช เชเชฌเซเชจเซเชเซ 16.04 เชชเชฐ เช เชฎเชฒเชฎเชพเช เชฎเซเชเซเชฏเซ, เชชเชฐเชเชคเซ เช เชจเซเชฏ เชตเชฟเชคเชฐเชฃเซ เชชเชฐ เชฎเซเชถเซเชเซเชฒเซ-เชฎเซเชเซเชค เชฐเชจ เชฎเชพเชเซ, เชฎเซเช เชฌเชงเซเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเชฏเซ.
เชฌเซเช เชจเซเชเชงเชฃเซ
@BotFather เชธเชพเชฅเซ เชจเชตเชพ เชฌเซเชเชจเซ เชจเซเชเชงเชฃเซ เชเชฐเซ. เช
เชฎเซ เชคเซเชจเซ เชฎเซเชเชฒเซเช เชเซเช /newbot
เช
เชจเซ เชเชเชณ เชฒเชเชพเชฃเชฎเชพเช. เช
เชฎเชจเซ เชจเชตเชพ เชฌเซเช เชเซเชเชจ เช
เชจเซ เชคเชฎเชพเชฐเชพ เชเชเชกเซเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ (เชคเชฎเซ เชคเซ เชฎเซเชณเชตเซ เชถเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เช
เชนเซเชเชฅเซ
เชชเชพเชฏเชฅเซเชจ เชคเซเชฏเชพเชฐเซ
เชฌเซเช เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ, เช
เชฎเซ เชชเซเชธเซเชคเชเชพเชฒเชฏเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช 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