Nigbagbogbo awọn ipo wa nigbati wiwọle si olupin naa nilo nibi ati bayi. Sibẹsibẹ, sisopọ nipasẹ SSH kii ṣe ọna ti o rọrun julọ nigbagbogbo, nitori o le ma ni alabara SSH kan, adirẹsi olupin tabi apapọ olumulo / ọrọ igbaniwọle ni ọwọ. Dajudaju ni
Nitorinaa Mo pinnu lati ṣe imuse ọna ti o rọrun ṣugbọn ti o nifẹ. Eyun, kọ bot Telegram kan pe, nigbati o ba ṣe ifilọlẹ lori olupin funrararẹ, yoo ṣe awọn aṣẹ ti a firanṣẹ si rẹ ati da abajade pada. Lehin iwadi
Mo ṣe iṣẹ akanṣe yii lori Ubuntu 16.04, ṣugbọn fun ifilọlẹ laisi wahala lori awọn pinpin miiran Mo gbiyanju lati ṣe ohun gbogbo ni ọna gbogbogbo.
Iforukọsilẹ Bot
Fiforukọṣilẹ bot tuntun pẹlu @BotBaba. A fi ranṣẹ si i /newbot
ati siwaju sii ninu ọrọ naa. A yoo nilo aami kan fun bot tuntun ati id rẹ (o le gba, fun apẹẹrẹ, lati
Python igbaradi
Lati ṣe ifilọlẹ bot a yoo lo ile-ikawe naa telebot
(pip install pytelegrambotapi
). Lilo ile-ikawe subprocess
A yoo ṣiṣẹ awọn aṣẹ lori olupin naa.
Nṣiṣẹ bot
Lori olupin a ṣẹda faili bot.py:
nano bot.py
Ki o si lẹẹmọ koodu naa sinu rẹ:
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)#в случае падения
A rọpo bot tokini ninu rẹ pẹlu eyiti @BotFather ti gbejade, ati olumulo_id pẹlu iye id ti akọọlẹ rẹ. Imudaniloju ID olumulo jẹ pataki ki bot n pese iraye si olupin rẹ nikan si ọ. Išẹ check_output()
ṣiṣẹ aṣẹ ti o kọja ati da abajade pada.
Gbogbo ohun ti o ku ni lati ṣe ifilọlẹ bot. Lati ṣiṣe awọn ilana lori olupin Mo fẹ lati lo screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(nibiti "ServerBot" jẹ ID ilana)
Ilana naa yoo bẹrẹ laifọwọyi ni abẹlẹ. Jẹ ki a lọ sinu ijiroro pẹlu bot ki o ṣayẹwo pe ohun gbogbo n ṣiṣẹ bi o ti yẹ:
Oriire! Bot naa n ṣiṣẹ awọn aṣẹ ti a firanṣẹ si. Bayi, lati wọle si olupin, o kan nilo lati ṣii ọrọ sisọ pẹlu bot.
Awọn aṣẹ atunwi
Nigbagbogbo, lati ṣe atẹle ipo olupin, o ni lati ṣiṣe awọn aṣẹ kanna. Nitorinaa, imuse ti atunwi awọn aṣẹ laisi fifiranṣẹ wọn lẹẹkansi yoo jẹ deede.
A yoo ṣe imuse rẹ nipa lilo awọn bọtini inline labẹ awọn ifiranṣẹ:
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)#в случае падения
Tun bot bẹrẹ:
killall python3
screen -dmS ServerBot python3 bot.py
Jẹ ki a ṣayẹwo lẹẹkansi pe ohun gbogbo n ṣiṣẹ ni deede:
Nigbati o ba tẹ bọtini ti o wa labẹ ifiranṣẹ naa, bot gbọdọ tun ṣe aṣẹ lati eyiti o ti fi ifiranṣẹ ranṣẹ.
Dipo ti pinnu
Nitoribẹẹ, ọna yii ko ṣe dibọn pe o jẹ rirọpo fun awọn ọna asopọ kilasika, sibẹsibẹ, o fun ọ laaye lati wa ni iyara nipa ipo olupin ati firanṣẹ awọn aṣẹ ti ko nilo iṣelọpọ eka.
orisun: www.habr.com