Go minic bíonn cásanna ann nuair a bhíonn gá le rochtain ar an bhfreastalaí anseo agus anois. Mar sin féin, ní i gcónaí é nascadh trí SSH ar an modh is áisiúla, mar b'fhéidir nach mbeadh cliant SSH, seoladh freastalaí nó teaglaim úsáideora/pasfhocail agat. Ar ndóigh tá
Mar sin chinn mé réiteach simplí ach suimiúil a chur i bhfeidhm. Is é sin, scríobh bot Telegram a dhéanfaidh, nuair a sheoltar é ar an bhfreastalaí féin, orduithe a sheoltar chuige agus an toradh a sheoladh ar ais. Tar éis staidéar a dhéanamh
Chuir mé an tionscadal seo i bhfeidhm ar Ubuntu 16.04, ach le haghaidh seoladh saor ó thrioblóid ar dháiltí eile rinne mé iarracht gach rud a dhéanamh ar bhealach ginearálta.
Clárú bot
Bot nua á chlárú le @BotFather. Cuirimid chuige é /newbot
agus níos faide sa téacs. Beidh comhartha ag teastáil uainn don bhota nua agus d'aitheantas (is féidir leat é a fháil, mar shampla, ó
Ullmhúchán Python
Chun an bot a sheoladh úsáidfimid an leabharlann telebot
(pip install pytelegrambotapi
). Ag baint úsáide as an leabharlann subprocess
Déanfaimid orduithe a fhorghníomhú ar an bhfreastalaí.
Rith bot
Cruthaigh comhad bot.py ar an bhfreastalaí:
nano bot.py
Agus greamaigh an cód isteach ann:
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)#в случае падения
Déanaimid ionad an chomhartha bot atá ann leis an gceann a d'eisigh @BotFather, agus an t-úsáideoir_id le luach aitheantais do chuntais. Is gá an t-aitheantas úsáideora a fhíorú ionas go dtabharfaidh an bot rochtain ar do fhreastalaí duit amháin. Feidhm check_output()
cuireann sé an t-ordú a thugtar i gcrích agus cuireann sé an toradh ar ais.
Níl ann ach an bot a thosú. Le haghaidh próisis a reáchtáil ar an bhfreastalaí, is fearr liom a úsáid screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(áit arb é "ServerBot" aitheantas an phróisis)
Beidh an próiseas ar siúl go huathoibríoch sa chúlra. Rachaimid chuig an agallamh leis an bot agus seiceáil go n-oibríonn gach rud mar ba chóir:
Comhghairdeachas! Feidhmíonn an bot orduithe a seoladh chuige. Anois, chun rochtain a fháil ar an bhfreastalaí, ní gá duit ach agallamh a oscailt leis an bot.
Orduithe a athrá
Go minic, chun monatóireacht a dhéanamh ar staid an fhreastalaí, caithfidh tú na horduithe céanna a rith. Dá bhrí sin, bheadh sé an-oiriúnach orduithe a athdhéanamh gan iad a sheoladh arís.
Cuirfimid i bhfeidhm é trí úsáid a bhaint as cnaipí inlíne faoi na teachtaireachtaí:
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)#в случае падения
Atosaigh an bot:
killall python3
screen -dmS ServerBot python3 bot.py
Déanaimis seiceáil arís go n-oibríonn gach rud i gceart:
Nuair a chliceálann tú an cnaipe faoin teachtaireacht, caithfidh an bot an t-ordú óna seoladh an teachtaireacht a athdhéanamh.
In ionad a thabhairt i gcrích
Ar ndóigh, níl an modh seo ag ligean air go bhfuil sé in ionad modhanna nasc clasaiceach, áfach, ligeann sé duit eolas a fháil go tapa ar staid an fhreastalaí agus orduithe a sheoladh chuige nach dteastaíonn aschur casta uathu.
Foinse: will.com