ಪೈಥಾನ್‌ನಲ್ಲಿ ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಬಳಸಿ ಲಿನಕ್ಸ್ ಸರ್ವರ್‌ಗೆ ಪ್ರವೇಶ

ಇಲ್ಲಿ ಮತ್ತು ಈಗ ಸರ್ವರ್‌ಗೆ ಪ್ರವೇಶ ಅಗತ್ಯವಿರುವಾಗ ಆಗಾಗ್ಗೆ ಸಂದರ್ಭಗಳಿವೆ. ಆದಾಗ್ಯೂ, SSH ಮೂಲಕ ಸಂಪರ್ಕಿಸುವುದು ಯಾವಾಗಲೂ ಅತ್ಯಂತ ಅನುಕೂಲಕರ ವಿಧಾನವಲ್ಲ, ಏಕೆಂದರೆ ನೀವು SSH ಕ್ಲೈಂಟ್, ಸರ್ವರ್ ವಿಳಾಸ ಅಥವಾ ಬಳಕೆದಾರ/ಪಾಸ್‌ವರ್ಡ್ ಸಂಯೋಜನೆಯನ್ನು ಹೊಂದಿಲ್ಲದಿರಬಹುದು. ಸಹಜವಾಗಿ ಹೊಂದಿವೆ ವೆಬ್ಮಿನ್, ಇದು ಆಡಳಿತವನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ, ಆದರೆ ಇದು ತ್ವರಿತ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.

ಆದ್ದರಿಂದ ನಾನು ಸರಳ ಆದರೆ ಆಸಕ್ತಿದಾಯಕ ಪರಿಹಾರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಿರ್ಧರಿಸಿದೆ. ಅವುಗಳೆಂದರೆ, ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಅನ್ನು ಬರೆಯಿರಿ, ಅದು ಸರ್ವರ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿದಾಗ, ಅದಕ್ಕೆ ಕಳುಹಿಸಿದ ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ನೀಡುತ್ತದೆ. ಅಧ್ಯಯನ ಮಾಡಿದ ಹಲವಾರು ಲೇಖನಗಳು ಈ ವಿಷಯದ ಮೇಲೆ, ಅಂತಹ ಅನುಷ್ಠಾನಗಳನ್ನು ಯಾರೂ ವಿವರಿಸಿಲ್ಲ ಎಂದು ನಾನು ಅರಿತುಕೊಂಡೆ.

ನಾನು ಈ ಯೋಜನೆಯನ್ನು ಉಬುಂಟು 16.04 ನಲ್ಲಿ ಜಾರಿಗೊಳಿಸಿದೆ, ಆದರೆ ಇತರ ವಿತರಣೆಗಳಲ್ಲಿ ತೊಂದರೆ-ಮುಕ್ತ ಬಿಡುಗಡೆಗಾಗಿ ನಾನು ಎಲ್ಲವನ್ನೂ ಸಾಮಾನ್ಯ ರೀತಿಯಲ್ಲಿ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದೆ.

ಬಾಟ್ ನೋಂದಣಿ

@BotFather ಜೊತೆಗೆ ಹೊಸ ಬೋಟ್ ಅನ್ನು ನೋಂದಾಯಿಸಲಾಗುತ್ತಿದೆ. ನಾವು ಅದನ್ನು ಅವನಿಗೆ ಕಳುಹಿಸುತ್ತೇವೆ /newbot ಮತ್ತು ಪಠ್ಯದಲ್ಲಿ ಮತ್ತಷ್ಟು. ನಮಗೆ ಹೊಸ ಬೋಟ್ ಮತ್ತು ನಿಮ್ಮ ಐಡಿಗಾಗಿ ಟೋಕನ್ ಅಗತ್ಯವಿದೆ (ನೀವು ಅದನ್ನು ಪಡೆಯಬಹುದು, ಉದಾಹರಣೆಗೆ, ನಿಂದ @usinfobot).

ಪೈಥಾನ್ ತಯಾರಿ

ಬೋಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ನಾವು ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ 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 ಅನ್ನು ನಿಮ್ಮ ಖಾತೆಯ ಐಡಿ ಮೌಲ್ಯದೊಂದಿಗೆ ಬದಲಾಯಿಸುತ್ತೇವೆ. ಬಳಕೆದಾರ ID ಯನ್ನು ಪರಿಶೀಲಿಸುವುದು ಅವಶ್ಯಕ ಆದ್ದರಿಂದ ಬೋಟ್ ನಿಮಗೆ ಮಾತ್ರ ನಿಮ್ಮ ಸರ್ವರ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಕಾರ್ಯ check_output() ರವಾನಿಸಿದ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

ಬೋಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಮಾತ್ರ ಉಳಿದಿದೆ. ಸರ್ವರ್‌ನಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಚಲಾಯಿಸಲು ನಾನು ಬಳಸಲು ಬಯಸುತ್ತೇನೆ screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

(ಇಲ್ಲಿ "ಸರ್ವರ್‌ಬಾಟ್" ಪ್ರಕ್ರಿಯೆ ID ಆಗಿದೆ)

ಪ್ರಕ್ರಿಯೆಯು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಬೋಟ್‌ನೊಂದಿಗೆ ಸಂವಾದಕ್ಕೆ ಹೋಗೋಣ ಮತ್ತು ಎಲ್ಲವೂ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸೋಣ:

ಪೈಥಾನ್‌ನಲ್ಲಿ ಟೆಲಿಗ್ರಾಮ್ ಬೋಟ್ ಬಳಸಿ ಲಿನಕ್ಸ್ ಸರ್ವರ್‌ಗೆ ಪ್ರವೇಶ

ಅಭಿನಂದನೆಗಳು! ಬೋಟ್ ಅದಕ್ಕೆ ಕಳುಹಿಸಿದ ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಈಗ, ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು, ನೀವು ಬೋಟ್ನೊಂದಿಗೆ ಸಂವಾದವನ್ನು ತೆರೆಯಬೇಕು.

ಪುನರಾವರ್ತಿತ ಆಜ್ಞೆಗಳು

ಸಾಮಾನ್ಯವಾಗಿ, ಸರ್ವರ್ನ ಸ್ಥಿತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು, ನೀವು ಅದೇ ಆಜ್ಞೆಗಳನ್ನು ಚಲಾಯಿಸಬೇಕು. ಆದ್ದರಿಂದ, ಅವುಗಳನ್ನು ಮತ್ತೆ ಕಳುಹಿಸದೆ ಪುನರಾವರ್ತಿತ ಆಜ್ಞೆಗಳ ಅನುಷ್ಠಾನವು ತುಂಬಾ ಸೂಕ್ತವಾಗಿದೆ.

ಸಂದೇಶಗಳ ಅಡಿಯಲ್ಲಿ ಇನ್‌ಲೈನ್ ಬಟನ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತೇವೆ:

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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ