Поддержка интерактивного ввода через терминал bash в боте Telegram на Python.Linux

Ответить
Anonymous
 Поддержка интерактивного ввода через терминал bash в боте Telegram на Python.

Сообщение Anonymous »


Я написал простого бота для Telegram на Python, который работает следующим образом: Пользовательское сообщение — команда, которая будет отправлена ​​на bash-терминал хоста бота с помощью библиотеки подпроцессов. ответ бота - вывод терминала. Я столкнулся с проблемой: невозможно использовать скрипты и инструменты, использующие интерактивный ввод (например, sudo), поэтому мне приходится заходить в терминал.

Вопрос: можно ли сделать подобную поддержку интерактивного ввода и как? Код ниже

подпроцесс импорта из telegram.ext import Updater, CommandHandler, MessageHandler, Filters ТОКЕН = "" def start (обновление, контекст): update.message.reply_text("Первое сообщение.") # Выполнять Защиту выполнения_команды (обновление, контекст): # Получать команда = обновление.сообщение.текст пытаться: # Результат результат = subprocess.check_output(команда, оболочка=True, текст=True) # Отправлять update.message.reply_text(результат) кроме исключения как e: # Ошибок update.message.reply_text(f"Ошибка: {str(e)}") # Основная функция защита основной(): # Программа обновления updater = Updater(TOKEN, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("старт", старт)) dp.add_handler(MessageHandler(Filters.text & ~Filters.command, Execute_command)) updater.start_polling() updater.idle() если имя == "основное": основной() Я думаю, что это можно сделать с помощью библиотеки pexpect, но пока не понимаю, как это сделать.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»