ืืขืชืื ืงืจืืืืช ืืฉ ืืฆืืื ืฉืืื ืืฉ ืฆืืจื ืืืืฉื ืืฉืจืช ืืื ืืขืืฉืื. ืขื ืืืช, ืืืืืจ ืืืืฆืขืืช 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 ืืขืจื ืืืืื ืฉื ืืฉืืื ื. ืืฉ ืฆืืจื ืืืืืงืช ืืืื ืืืฉืชืืฉ ืืื ืฉืืืื ืืกืคืง ืืืฉื ืืฉืจืช ืฉืื ืจืง ืื. ืคืึผื ืงืฆึดืึธื check_output()
ืืืฆืข ืืช ืืคืงืืื ืื ืชืื ื ืืืืืืจ ืืช ืืชืืฆืื.
ื ืืชืจ ืจืง ืืืคืขืื ืืช ืืืื. ืืืคืขืืช ืชืืืืืื ืขื ืืฉืจืช, ืื ื ืืขืืืฃ ืืืฉืชืืฉ screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(ืืืฉืจ "ServerBot" ืืื ืืืื ืืชืืืื)
ืืชืืืื ืืคืขื ืืืืืืืืช ืืจืงืข. ืืื ื ืื ืืืืืืื ืขื ืืืื ืื ืืืืง ืฉืืื ืขืืื ืืื ืฉืฆืจืื:
ืืื ืืื! ืืืื ืืืฆืข ืืช ืืคืงืืืืช ืฉื ืฉืืืืช ืืืื. ืืขืช, ืขื ืื ืช ืืืฉืช ืืฉืจืช, ืืชื ืจืง ืฆืจืื ืืคืชืื ืืืืืื ืขื ืืืื.
ืืืจื ืขื ืืคืงืืื
ืืขืชืื ืงืจืืืืช, ืืื ืืคืงื ืขื ืืฆื ืืฉืจืช, ืืชื ืฆืจืื ืืืฆืข ืืช ืืืชื ืคืงืืืืช. ืืื, ืืืฉืื ืคืงืืืืช ืืืืจืืช ืืืื ืืฉืืื ืืืชื ืืืืฉ ืืืื ืืืื ืื ืืืงืื.
ื ืืืฉื ืืช ืื ืืืืฆืขืืช ืืคืชืืจืื ืืืืืขืื ืืชืืช ืืืืืขืืช:
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