á€áá±áá¬ááŸáá·áº ááᯠá€áá±áá¬ááœáẠáá¬áá¬ááá¯á·áááºáá±á¬ááºááẠááá¯á¡ááºááá·áºá¡ááŒá±á¡áá±áá»á¬áž áááŒá¬ááááŸááááºá ááá¯á·áá±á¬áºá SSH ááŸáááá·áºáá»áááºáááºááŒááºážááẠá¡ááŒá²áááºážá¡áááºááŒá±áá¯á¶ážáááºážáááºážááá¯ááºáá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº ááá·áºááœáẠSSH client áá
áºáá¯á áá¬áá¬ááááºá
ᬠááá¯á·ááá¯áẠá¡áá¯á¶ážááŒá¯áá°/á
áá¬ážááŸááºáá±á«ááºážá
ááºááŸá¯ áááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá áá¯ááºáá«áááºá
áá«ááŒá±á¬áá·áº ááá¯ážááŸááºážáá±ááá·áº á
áááºáááºá
á¬ážá
áá¬áá±á¬ááºážáá²á· á¡ááŒá±áá
áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá ááá¯ááá¯áááºááŸá¬á áá¬áá¬ááá¯ááºááá¯ááºááœáá·áºáá±á¬á¡áá«á áááºážáá¶áá±ážááá¯á·áá±á¬á¡áááá·áºáá»á¬ážááá¯áá¯ááºáá±á¬ááºááŒá®ážááááºááá¯ááŒááºáá±ážááá·áº Telegram bot áá
áºáá¯ááá¯áá±ážáááºá áá±á·áá¬ááŒá®áž
Ubuntu 16.04 ááœáẠá€ááá±á¬áá»ááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá ááá¯á·áá±á¬áº á¡ááŒá¬ážááŒáá·áºáá±ááŸá¯áá»á¬ážááœáẠááŒá¿áá¬áááŸááá±á¬ áá¯ááºáá±á¬ááºááŸá¯á¡ááœááºá á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá±áá°áá»áááºážáááºážááŒáá·áº ááŒá¯áá¯ááºááẠááŒáá¯ážá á¬ážáá²á·áááºá
Bot ááŸááºáá¯á¶áááºááŒááºážá
@BotFather ááŒáá·áº áá±á¬á·ááºá¡áá
áºáá
áºáᯠááŸááºáá¯á¶áááºáá«á áá«ááá¯á·á áá°á·ááᯠááá¯á·áááºá /newbot
ááŸáá·áº á
á¬áá¬ážáá²ááœáẠáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬á·ááºááá¯áááºá¡áá
áºááŸáá·áº ááá·áºá¡áá¯ááºáá®ááᯠááá¯á¡ááºáá«ááẠ(á¥ááá¬á¡á¬ážááŒáá·áº áááºážááᯠáááºáááá¯ááºáááºá
Python ááŒááºáááºááŸá¯
bot ááᯠrun áááºá áá»áœááºá¯ááºááá¯á·ááẠá
á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá 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 ááŸáá¯ááºáá±ážáá±á¬ áá±á¬á·ááºááá¯áááºááᯠáá»áœááºá¯ááºááá¯á·ááẠááá·áºá¡áá±á¬áá·áºá ID áááºááá¯ážááŒáá·áº user_id ááᯠá¡á
á¬ážááá¯ážáá«áááºá á¡áá¯á¶ážááŒá¯áá° id ááᯠá
á
áºáá±ážááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº bot ááẠááá·áºáá¬áá¬á¡á¬áž ááá·áºá¡ááœááºáᬠáááºáá±á¬ááºááœáá·áºáá±ážáá«áááºá áá¯ááºáá±á¬ááºáá»áẠcheck_output()
áá±ážáá¬ážáá±á¬ command ááᯠáá¯ááºáá±á¬ááºááŒá®áž ááááºááᯠááŒááºáá±ážáááºá
bot ááá¯á
áááºáááºáá¬áá»ááºáá±á¬á·áááºá áá¬áá¬áá±á«áºááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ áá¯ááºáááºážá
ááºáá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááẠá¡áá¯á¶ážááŒá¯ááá¯áá«áááºá screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
("ServerBot" ááẠáá¯ááºáááºážá áẠID áá±áá¬ááœááº)
áá¯ááºáááºážá ááºááẠáá±á¬ááºáá¶ááœáẠá¡ááá¯á¡áá»á±á¬áẠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá bot ááŸáá·áº ááœá±ážááœá±ážááŸá¯ááá¯á·ááœá¬ážá á¡áá¬á¡á¬ážáá¯á¶ážááẠááá·áºá¡áá±ááŒáá·áº á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž á á áºáá±ážááŒáá·áºááŒáá«á áá¯á·á
áá¯ááºáá°áá«áááºá bot ááẠáááºážáá¶áá±ážááá¯á·áá±á¬ command áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá ááá¯á¡áá«á áá¬áá¬ááá¯áááºáá±á¬ááºáááºá¡ááœááºá áááºááẠbot ááŸáá·áº ááœá±ážááœá±ážááŸá¯áá
áºáá¯ááœáá·áºáááºáá¬ááá¯áááºá
á¡áááá·áºááᯠáááºáá«áááºáá«
áááŒá¬ááá áá¬áá¬áá¡ááŒá±á¡áá±ááá¯á á±á¬áá·áºááŒáá·áºáááºá áááºáááºáá°áá®áá±á¬á¡áááá·áºáá»á¬ážááá¯áá¯ááºáá±á¬ááºáááºááŸááááºá ááá¯á·ááŒá±á¬áá·áºá áááºážááá¯á·ááᯠááŒááºáááá¯á·áá² áááºáá«ááá²áá² á¡áááá·áºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááẠáá±áá¬ááœááºááœá¬ážáááá·áºáááºá
áááºáá±á·áá»áºáá»á¬ážá¡á±á¬ááºááŸá inline ááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá«áááºá
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
á¡áá¬á¡á¬ážáá¯á¶áž ááŸááºáááºááŸá¯ááŸááááŸá áááºáá¶á á áºáá±ážááŒáá«á áá¯á·á
áááºáá±á·áá»áºá¡á±á¬ááºááŸá ááá¯ááºááᯠááŸáááºááŒááºážááŒáá·áºá bot ááẠá€áááºáá±á·áá»áºááᯠáá±ážááá¯á·áá²á·ááá·áº á¡áááá·áºááᯠááŒááºáá¯ááºááááºááŒá
áºáááºá
á¡á²áá®á¡á á¬ážáá áºá¥á®ážáááá¯á¶ážááá¯ááºážá
áá¯ááºáá«áááºá á€áááºážáááºážááẠááá¹ááááºáá»áááºáááºááŸá¯áááºážáááºážáá»á¬ážá¡ááœáẠá¡á á¬ážááá¯ážáááºáá±á¬ááºááŒááºážáááŸááá±á¬áºáááºážá áááºážááẠááá·áºá¡á¬áž áá¬áá¬áá¡ááŒá±á¡áá±ááᯠáá»ááºááŒááºá áœá¬ááááŸáááá¯ááºááŒá®áž ááŸá¯ááºááœá±ážáá±á¬ output áááá¯á¡ááºáá±á¬ command áá»á¬ážáá±ážááá¯á·áááºááœáá·áºááŒá¯áááºá
source: www.habr.com