ብዙውን ጊዜ የአገልጋዩ መዳረሻ እዚህ እና አሁን በሚያስፈልግበት ጊዜ ሁኔታዎች አሉ። ነገር ግን፣ በSSH በኩል መገናኘት ሁልጊዜ በጣም ምቹ መንገድ አይደለም፣ ምክንያቱም የኤስኤስኤች ደንበኛ፣ የአገልጋይ አድራሻ ወይም የተጠቃሚ/የይለፍ ቃል ጥምረት ላይኖርዎት ይችላል። በእርግጥ አላቸው
ስለዚህ ቀላል ግን አስደሳች መፍትሄን ተግባራዊ ለማድረግ ወሰንኩ. ይኸውም የቴሌግራም ቦት ለመፃፍ በራሱ በአገልጋዩ ላይ ሲጀመር የተላኩትን ትእዛዞች ተግባራዊ በማድረግ ውጤቱን ይመልሳል። በማጥናት
ይህንን ፕሮጀክት በኡቡንቱ 16.04 ላይ ተግባራዊ አድርጌያለሁ, ነገር ግን በሌሎች ስርጭቶች ላይ ከችግር ነፃ የሆነ ሩጫ, ሁሉንም ነገር በአጠቃላይ ለማድረግ ሞከርኩ.
የቦት ምዝገባ
አዲስ ቦት በ @BotFather ይመዝገቡ። እኛ እንልካለን። /newbot
እና በጽሑፉ ውስጥ ተጨማሪ. አዲስ bot token እና መታወቂያዎ እንፈልጋለን (ለምሳሌ ከ ሊያገኙ ይችላሉ።
የፓይዘን ዝግጅት
ቦቱን ለማስኬድ፣ላይብረሪውን እንጠቀማለን። 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" የሂደቱ መታወቂያ ከሆነ)
ሂደቱ በራስ-ሰር ከበስተጀርባ ይሠራል. ከቦቱ ጋር ወደ ውይይቱ እንሂድ እና ሁሉም ነገር በሚፈለገው መልኩ እንደሚሰራ እንፈትሽ።
እንኳን ደስ አላችሁ! ቦት ወደ እሱ የተላኩትን ትዕዛዞች ይፈጽማል. አሁን፣ አገልጋዩን ለማግኘት፣ ከቦት ጋር ውይይት መክፈት ብቻ ያስፈልግዎታል።
የትእዛዝ ድግግሞሽ
ብዙውን ጊዜ, የአገልጋዩን ሁኔታ ለመከታተል, ተመሳሳይ ትዕዛዞችን መፈጸም አለብዎት. ስለዚህ ትእዛዞችን እንደገና ሳይልኩ የመድገም ትግበራ ከቦታው ውጭ ይሆናል።
በመልእክቶቹ ስር የውስጠ-መስመር ቁልፎችን በመጠቀም እንተገብራለን፡-
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
ሁሉም ነገር በትክክል እንደሚሰራ እንደገና እንፈትሽ፡
በመልእክቱ ስር ያለውን ቁልፍ በመጫን ቦት ይህ መልእክት የተላከበትን ትዕዛዝ መድገም አለበት።
ከዚህ ይልቅ አንድ መደምደሚያ
በእርግጥ ይህ ዘዴ ለጥንታዊ የግንኙነት ዘዴዎች ምትክ መስሎ አይታይም ፣ ሆኖም ስለ አገልጋዩ ሁኔታ በፍጥነት እንዲያውቁ እና ውስብስብ ውፅዓት የማይፈልጉ ትዕዛዞችን እንዲልኩ ያስችልዎታል።
ምንጭ: hab.com