Samun dama ga uwar garken Linux ta amfani da Telegram bot a Python

Sau da yawa akwai yanayi lokacin da ake buƙatar samun dama ga uwar garken nan da yanzu. Koyaya, haɗa ta hanyar SSH ba koyaushe hanya ce mafi dacewa ba, saboda ƙila ba za ku sami abokin ciniki na SSH ba, adireshin uwar garken, ko haɗin mai amfani/kalmar shiga a hannu. Tabbas da Yanar gizo, wanda ke sauƙaƙa gudanarwa, amma kuma baya ba da damar shiga nan take.

Don haka na yanke shawarar aiwatar da mafita mai sauƙi amma mai ban sha'awa. Wato, don rubuta bot ɗin Telegram wanda, idan an ƙaddamar da shi akan uwar garken kanta, zai aiwatar da umarnin da aka aika masa kuma ya dawo da sakamakon. Bayan yayi karatu da dama labarai akan wannan batu, na gane cewa har yanzu babu wanda ya bayyana irin wannan aiwatarwa.

Na aiwatar da wannan aikin akan Ubuntu 16.04, amma don gujewa ba tare da matsala akan sauran rarraba ba, na yi ƙoƙarin yin komai a gaba ɗaya.

Bot rajista

Yi rijistar sabon bot tare da @BotFather. Mun aika shi /newbot kuma kara a cikin rubutu. Za mu buƙaci sabon alamar bot da id ɗin ku (zaku iya samun ta, misali, daga @userinfobot).

Python shiri

Don gudanar da bot, za mu yi amfani da ɗakin karatu telebot (pip install pytelegrambotapi). Amfani da Library subprocess za mu aiwatar da umarni akan uwar garken.

Ƙaddamar da Bot

Ƙirƙiri fayil ɗin bot.py akan sabar:
nano bot.py

Kuma manna code a ciki:

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)#в случае падения

Muna maye gurbin alamar bot a ciki da wanda @BotFather ya bayar, da user_id tare da ƙimar id na asusunku. Ana buƙatar duba id ɗin mai amfani domin bot ɗin ya ba da dama ga uwar garken ku kawai gare ku. Aiki check_output() yana aiwatar da umarnin da aka bayar kuma ya dawo da sakamakon.

Ya rage kawai don fara bot. Don tafiyar matakai akan sabar, na fi son amfani da su screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(inda "ServerBot" shine ID na tsari)

Tsarin zai gudana ta atomatik a bango. Bari mu je tattaunawa tare da bot kuma duba cewa komai yana aiki kamar yadda ya kamata:

Samun dama ga uwar garken Linux ta amfani da Telegram bot a Python

Taya murna! Bot ɗin yana aiwatar da umarnin da aka aika masa. Yanzu, don samun dama ga uwar garken, kawai kuna buƙatar buɗe tattaunawa tare da bot.

Maimaita umarni

Sau da yawa, don saka idanu akan yanayin uwar garken, dole ne ku aiwatar da umarni iri ɗaya. Don haka, aiwatar da maimaita umarni ba tare da sake aika su ba zai zama mara kyau.

Za mu aiwatar da shi ta amfani da maɓallan layi a ƙarƙashin saƙon:

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)#в случае падения

Sake kunna bot:

killall python3
screen -dmS ServerBot python3 bot.py

Bari mu sake dubawa cewa komai yana aiki daidai:

Samun dama ga uwar garken Linux ta amfani da Telegram bot a Python

Ta danna maɓallin ƙarƙashin saƙon, bot dole ne ya maimaita umarnin da aka aiko da wannan saƙon.

Maimakon a ƙarshe

Tabbas, wannan hanyar ba ta yin kamar ta zama mai maye gurbin hanyoyin haɗin yanar gizo na gargajiya, duk da haka, tana ba ku damar gano yanayin uwar garken da sauri kuma aika umarni zuwa gare ta waɗanda ba sa buƙatar fitarwa mai rikitarwa.

source: www.habr.com

Add a comment