Как я могу отправить строку (имя файла сценария оболочки) из приложения android в программу python на моем компьютере и запустить python скрипт, названный в указанной строке?
У меня есть скрипт python... doThis (./openNetflix) запустит сценарий. /openNetflix, который, как вы, наверное, догадались, открывает Netflix.
Как настроить python-сервер для получения строки и передать ее в мою функцию doThis (scriptNameString)?
Я начал писать немного длинный комментарий по этому делу, но когда вы приближаетесь к лимиту символов для комментария, полезно преобразовать его в ответ, я думаю!
Самый простой способ выполнить эту задачу - это одна из многих отличных библиотек 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 для этой соли, текущего часа и команды, поступающей от клиента), и если они то вы знаете, что запрос действителен.