Wiwọle si olupin Linux nipa lilo bot Telegram ni Python

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 ayelujara min, eyi ti o rọrun iṣakoso, ṣugbọn ko tun pese wiwọle si lẹsẹkẹsẹ.

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 pupọ ìwé Lori koko yii, Mo rii pe ko si ẹnikan ti o ti ṣe apejuwe iru awọn imuse.

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 @userinfobot).

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ẹ:

Wiwọle si olupin Linux nipa lilo bot Telegram ni Python

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:

Wiwọle si olupin Linux nipa lilo bot Telegram ni Python

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

Fi ọrọìwòye kun