በ Python ውስጥ የቴሌግራም ቦትን በመጠቀም ወደ ሊኑክስ አገልጋይ መድረስ

ብዙውን ጊዜ የአገልጋዩ መዳረሻ እዚህ እና አሁን በሚያስፈልግበት ጊዜ ሁኔታዎች አሉ። ነገር ግን፣ በSSH በኩል መገናኘት ሁልጊዜ በጣም ምቹ መንገድ አይደለም፣ ምክንያቱም የኤስኤስኤች ደንበኛ፣ የአገልጋይ አድራሻ ወይም የተጠቃሚ/የይለፍ ቃል ጥምረት ላይኖርዎት ይችላል። በእርግጥ አላቸው ዌይን ሜን, ይህም አስተዳደርን ቀላል ያደርገዋል, ነገር ግን ፈጣን መዳረሻ አይሰጥም.

ስለዚህ ቀላል ግን አስደሳች መፍትሄን ተግባራዊ ለማድረግ ወሰንኩ. ይኸውም የቴሌግራም ቦት ለመፃፍ በራሱ በአገልጋዩ ላይ ሲጀመር የተላኩትን ትእዛዞች ተግባራዊ በማድረግ ውጤቱን ይመልሳል። በማጥናት ብዙ ጽሑፎች በዚህ ርዕስ ላይ, ማንም ሰው እስካሁን ድረስ እንዲህ ያሉ አተገባበርን እንደገለፀ ተገነዘብኩ.

ይህንን ፕሮጀክት በኡቡንቱ 16.04 ላይ ተግባራዊ አድርጌያለሁ, ነገር ግን በሌሎች ስርጭቶች ላይ ከችግር ነፃ የሆነ ሩጫ, ሁሉንም ነገር በአጠቃላይ ለማድረግ ሞከርኩ.

የቦት ምዝገባ

አዲስ ቦት በ @BotFather ይመዝገቡ። እኛ እንልካለን። /newbot እና በጽሑፉ ውስጥ ተጨማሪ. አዲስ bot token እና መታወቂያዎ እንፈልጋለን (ለምሳሌ ከ ሊያገኙ ይችላሉ። @userinfobot).

የፓይዘን ዝግጅት

ቦቱን ለማስኬድ፣ላይብረሪውን እንጠቀማለን። 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 በተሰጠው እና የተጠቃሚ_መታወቂያዎን መለያ እሴት እንተካለን። ቦት የአገልጋይዎን መዳረሻ ለእርስዎ ብቻ እንዲሰጥ የተጠቃሚ መታወቂያውን ማረጋገጥ ያስፈልጋል። ተግባር check_output() የተሰጠውን ትዕዛዝ ያስፈጽማል እና ውጤቱን ይመልሳል.

ቦት ለመጀመር ብቻ ይቀራል. በአገልጋዩ ላይ ለማሄድ ሂደቶች, መጠቀም እመርጣለሁ screen (sudo apt-get install screen):

screen -dmS ServerBot python3 bot.py

("ServerBot" የሂደቱ መታወቂያ ከሆነ)

ሂደቱ በራስ-ሰር ከበስተጀርባ ይሠራል. ከቦቱ ጋር ወደ ውይይቱ እንሂድ እና ሁሉም ነገር በሚፈለገው መልኩ እንደሚሰራ እንፈትሽ።

በ Python ውስጥ የቴሌግራም ቦትን በመጠቀም ወደ ሊኑክስ አገልጋይ መድረስ

እንኳን ደስ አላችሁ! ቦት ወደ እሱ የተላኩትን ትዕዛዞች ይፈጽማል. አሁን፣ አገልጋዩን ለማግኘት፣ ከቦት ጋር ውይይት መክፈት ብቻ ያስፈልግዎታል።

የትእዛዝ ድግግሞሽ

ብዙውን ጊዜ, የአገልጋዩን ሁኔታ ለመከታተል, ተመሳሳይ ትዕዛዞችን መፈጸም አለብዎት. ስለዚህ ትእዛዞችን እንደገና ሳይልኩ የመድገም ትግበራ ከቦታው ውጭ ይሆናል።

በመልእክቶቹ ስር የውስጠ-መስመር ቁልፎችን በመጠቀም እንተገብራለን፡-

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

ሁሉም ነገር በትክክል እንደሚሰራ እንደገና እንፈትሽ፡

በ Python ውስጥ የቴሌግራም ቦትን በመጠቀም ወደ ሊኑክስ አገልጋይ መድረስ

በመልእክቱ ስር ያለውን ቁልፍ በመጫን ቦት ይህ መልእክት የተላከበትን ትዕዛዝ መድገም አለበት።

ከዚህ ይልቅ አንድ መደምደሚያ

በእርግጥ ይህ ዘዴ ለጥንታዊ የግንኙነት ዘዴዎች ምትክ መስሎ አይታይም ፣ ሆኖም ስለ አገልጋዩ ሁኔታ በፍጥነት እንዲያውቁ እና ውስብስብ ውፅዓት የማይፈልጉ ትዕዛዞችን እንዲልኩ ያስችልዎታል።

ምንጭ: hab.com

አስተያየት ያክሉ