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