Gu math tric bidh suidheachaidhean ann nuair a tha feum air cothrom air an fhrithealaiche an seo agus an-dràsta. Ach, chan e ceangal tro SSH an-còmhnaidh an dòigh as freagarraiche, oir is dòcha nach eil teachdaiche SSH, seòladh frithealaiche, no measgachadh cleachdaiche / facal-faire agad ri làimh. Gu dearbh tha
Mar sin cho-dhùin mi fuasgladh sìmplidh ach inntinneach a chuir an gnìomh. Is e sin, bot Telegram a sgrìobhadh a chuireas, nuair a thèid a chuir air bhog air an fhrithealaiche fhèin, na h-òrdughan a chaidh a chuir thuige agus a thilleas an toradh. An dèidh sgrùdadh
Chuir mi am pròiseact seo an gnìomh air Ubuntu 16.04, ach airson ruith gun trioblaid air sgaoilidhean eile, dh’ fheuch mi ris a h-uile càil a dhèanamh ann an dòigh choitcheann.
Clàradh bot
Clàraich bot ùr le @BotFather. Bidh sinn ga chuir /newbot
agus nas fhaide air adhart anns an teacsa. Bidh feum againn air tòcan bot ùr agus an id agad (gheibh thu e, mar eisimpleir, bho
Ag ullachadh python
Gus am bot a ruith, cleachdaidh sinn an leabharlann telebot
(pip install pytelegrambotapi
). A ' cleachdadh an leabharlainn subprocess
cuiridh sinn an gnìomh àitheantan air an fhrithealaiche.
Cur air bhog bot
Cruthaich faidhle bot.py air an fhrithealaiche:
nano bot.py
Agus cuir a-steach an còd 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)#в случае падения
Bidh sinn a’ dol an àite an tòcan bot a th’ ann leis an fhear a chuir @BotFather a-mach, agus user_id le luach id a’ chunntais agad. Tha feum air sgrùdadh a dhèanamh air id an neach-cleachdaidh gus am bi am bot a’ toirt cothrom don t-seirbheisiche agad a-mhàin dhutsa. Gnìomh check_output()
cuir an gnìomh an àithne a chaidh a thoirt seachad agus tillidh e an toradh.
Chan eil air fhàgail ach airson am bot a thòiseachadh. Airson pròiseasan ruith air an fhrithealaiche, is fheàrr leam a chleachdadh screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(far a bheil “ServerBot” na ID pròiseas)
Bidh am pròiseas a 'ruith gu fèin-obrachail air a' chùl. Rachamaid chun a 'chòmhraidh leis a' bot agus dèan cinnteach gu bheil a h-uile càil ag obair mar a bu chòir:
Mealaibh ur naidheachd! Bidh am bot a' cur an gnìomh nan òrduighean a chaidh a chur thuige. A-nis, gus faighinn chun t-seirbheisiche, cha leig thu leas ach còmhradh fhosgladh leis a’ bot.
Ath-aithris àithne
Gu tric, gus sùil a chumail air staid an fhrithealaiche, feumaidh tu na h-aon òrdughan a chuir an gnìomh. Mar sin, bidh buileachadh òrdughan ath-aithris gun a bhith gan ath-shuidheachadh gu math a-mach à àite.
Cuiridh sinn an gnìomh e le putanan in-loidhne fo na teachdaireachdan:
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)#в случае падения
Ag ath-thòiseachadh am bot:
killall python3
screen -dmS ServerBot python3 bot.py
Feuch an dèan sinn cinnteach a-rithist gu bheil a h-uile dad ag obair ceart:
Le putadh air a’ phutan fon teachdaireachd, feumaidh am bot an àithne às an deach am brath seo a chuir a-rithist.
An àite a bhith co-dhùnadh
Gu dearbh, chan eil an dòigh seo a 'leigeil a-mach gu bheil e na àite nan dòighean ceangail clasaigeach, ge-tà, leigidh e leat faighinn a-mach gu luath mu staid an fhrithealaiche agus cuiridh e òrdughan thuige nach eil feumach air toradh iom-fhillte.
Source: www.habr.com