Отправить строку скрипту Python через сервер

1

Как я могу отправить строку (имя файла сценария оболочки) из приложения android в программу python на моем компьютере и запустить python скрипт, названный в указанной строке?

У меня есть скрипт python... doThis (./openNetflix) запустит сценарий. /openNetflix, который, как вы, наверное, догадались, открывает Netflix.

Как настроить python-сервер для получения строки и передать ее в мою функцию doThis (scriptNameString)?

  • 2
    Самый простой способ сделать это - использовать REST-интерфейс, так как для него есть готовые библиотеки, например, bottle bottle.org/docs/dev/index.html.
  • 1
    Это должен быть Python? Вы можете сделать это с помощью однострочного сценария оболочки вокруг netcat ... Или, проще говоря, это именно то, что telnet, rsh и т. Д. Уже делают ...
Показать ещё 5 комментариев
Теги:
scripting

1 ответ

0
Лучший ответ

Я начал писать немного длинный комментарий по этому делу, но когда вы приближаетесь к лимиту символов для комментария, полезно преобразовать его в ответ, я думаю!

Самый простой способ выполнить эту задачу - это одна из многих отличных библиотек python для создания служб REST. Мой личный фаворит - бутылка, и реализация этого вида обслуживания в бутылке будет такой же простой, как:

from bottle import route, run, template

@route('/execute/<command>')
def execute(command):
    if command == "list_blogs":
        // Do something 1
    elif command == "format_c":
        // Do something 2

run(host='localhost', port=79897)

Это не только предоставит вам услугу REST, но также поместит железную стену между пользовательским вводом и фактическим исполнением, поэтому пользовательский ввод не будет искажен файлом, который вы пытаетесь выполнить. Не забудьте никогда не использовать переменную команды где-либо вне if/else.

Как вы можете заметить, это связано со слабостью - любой, кто имеет эту ссылку, может вызвать эти функции и потенциально вызвать отказ в обслуживании или, возможно, даже фактический ущерб. Вот почему было бы неплохо иметь какой-то контроль и дополнительную безопасность, чтобы знать, что запрос был сделан от действительного клиента. Есть много способов решить эту проблему, я настоятельно рекомендую вам глубже изучить доступные. Очень просто было бы хранить на вашем сервере ключ ключей и солей, например:

salts["here_you_put_random_hash_as_key"] = "and_here_the_salt"

И затем вы также храните соль и ключ для этого конкретного клиента в коде клиентов. Затем, когда клиент делает запрос, он включает в себя его ключ и контрольную сумму (которая состоит из md5, сделанного из команды, ключ солидаля клиентов и, например, текущий час) в качестве дополнительных аргументов. Затем, когда вы получаете запрос и все 3 переменные, вы пытаетесь создать свою собственную контрольную сумму, используя одни и те же данные (поэтому вы выбираете соль для предоставленного ключа клиента и вычисляете md5 для этой соли, текущего часа и команды, поступающей от клиента), и если они то вы знаете, что запрос действителен.

  • 0
    Очень круто. Именно то, что мне было нужно. Спасибо, вы закончите, чёрт побери!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню