Feem ntau muaj cov xwm txheej thaum nkag mus rau lub server xav tau ntawm no thiab tam sim no. Txawm li cas los xij, kev sib txuas ntawm SSH tsis yog qhov yooj yim tshaj plaws, vim tias koj yuav tsis muaj SSH tus neeg siv khoom, chaw nyob server, lossis tus neeg siv / tus password ua ke ntawm tes. Tau kawg muaj
Yog li kuv txiav txim siab los siv cov kev daws teeb meem yooj yim tab sis nthuav. Namely, los sau Telegram bot uas, thaum pib ntawm lub server nws tus kheej, yuav ua tiav cov lus txib xa mus rau nws thiab rov qab cov txiaj ntsig. Muaj kev kawm
Kuv tau siv qhov project no ntawm Ubuntu 16.04, tab sis kom tsis muaj teeb meem khiav ntawm lwm qhov kev faib tawm, kuv tau sim ua txhua yam hauv txoj hauv kev.
Bot npe
Sau npe tus bot tshiab nrog @BotFather. Peb xa nws /newbot
thiab ntxiv rau hauv cov ntawv nyeem. Peb yuav xav tau ib tug tshiab bot token thiab koj tus ID (koj tuaj yeem tau txais nws, piv txwv li, los ntawm
Python kev npaj
Txhawm rau khiav lub bot, peb yuav siv lub tsev qiv ntawv telebot
(pip install pytelegrambotapi
). Siv lub tsev qiv ntawv subprocess
peb yuav ua cov lus txib ntawm lub server.
Bot tso tawm
Tsim cov ntaub ntawv bot.py ntawm lub server:
nano bot.py
Thiab paste lub code rau hauv nws:
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)#Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ
Peb hloov lub bot token nyob rau hauv nws nrog ib tug muab los ntawm @BotFather, thiab user_id nrog tus nqi id ntawm koj tus account. Kev kuaj xyuas tus neeg siv id yog xav tau kom lub bot muab kev nkag mus rau koj lub server nkaus xwb rau koj. Muaj nuj nqi check_output()
executes cov lus txib muab thiab xa cov txiaj ntsig.
Nws tseem tsuas yog pib lub bot. Rau kev khiav cov txheej txheem ntawm lub server, kuv nyiam siv screen
(sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(qhov twg "ServerBot" yog tus txheej txheem ID)
Cov txheej txheem yuav cia li khiav hauv keeb kwm yav dhau. Cia peb mus rau kev sib tham nrog bot thiab xyuas tias txhua yam ua haujlwm raws li nws yuav tsum:
Nrog koj zoo siab! Lub bot ua haujlwm cov lus txib xa mus rau nws. Tam sim no, nkag mus rau lub server, koj tsuas yog yuav tsum qhib kev sib tham nrog bot.
Hais kom rov ua dua
Feem ntau, txhawm rau saib xyuas lub xeev ntawm lub server, koj yuav tsum ua raws li cov lus txib tib yam. Yog li ntawd, kev ua raws li cov lus txib rov ua dua yam tsis tau xa lawv rov qab yuav tawm ntawm qhov chaw.
Peb yuav siv nws siv cov nyees khawm inline hauv qab cov lus:
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)#Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ
Restarting lub bot:
killall python3
screen -dmS ServerBot python3 bot.py
Cia peb rov xyuas dua tias txhua yam ua haujlwm raug:
Los ntawm nias lub pob hauv qab cov lus, bot yuav tsum rov hais dua cov lus txib los ntawm cov lus no tau xa mus.
Es tsis txhob ib tug xaus
Tau kawg, txoj kev no tsis yog ua piv txwv los ua ib qho kev hloov pauv rau txoj kev sib txuas classic, txawm li cas los xij, nws tso cai rau koj kom paub sai sai txog lub xeev ntawm cov neeg rau zaub mov thiab xa cov lus txib rau nws uas tsis tas yuav muaj cov khoom tsim tawm.
Tau qhov twg los: www.hab.com