Интерфейс удалённого запуска скрипта
-
Описание интерфейса
POST /spawn HTTP/1.1
spawn_args: {"аргументы запуска скрипта":...}
[текст скрипта] -
Возможные ответы
{"code":1,"message":"操作失败"}{"code":2,"message":"脚本有语法错误","detail":"конкретные сведения об ошибке"}{"code":3,"message":"已经有脚本正在运行中"}{"code":233,"message":"未知错误"} -
Описание
- [аргументы запуска скрипта] — печатаемая строка без символов перевода строки;
- [текст скрипта] — содержимое скрипта, которое может быть текстом или зашифрованными двоичными данными;
- на стороне скрипта аргументы запуска можно получить через
proc_getилиproc_take; - скрипт не сохраняется на устройстве как файл, а только выполняется;
- исключение из предыдущего пункта: если на устройстве включён режим демона скриптов, устройство кэширует связанные с ним данные скрипта.
-
Пример
Например, можно сформировать следующий запрос и отправить его на устройство:
POST /spawn HTTP/1.1
spawn_args: {"server_ip":"192.168.31.13","port":55555}
Content-Length: 123
local args = proc_get("spawn_args")
args = json.decode(args)
sys.alert("帐号服务器的 IP 为:"..args.server_ip.."\n 端口为:"..args.port)На устройстве появится диалоговое окно:
IP-адрес сервера аккаунта: 192.168.31.13
Порт: 55555- Реализация примера на Python (для Python 3.x):
# -*- coding: utf-8 -*-
import http.client
import json
spawn_args = {
"server_ip": "192.168.31.13", # IP-адрес компьютера
"port": 55555, # Порт компьютера
}
data = r'''
local args = proc_get("spawn_args")
args = json.decode(args)
sys.alert("帐号服务器的 IP 为:"..args.server_ip.."\n 端口为:"..args.port)
'''
headers = {
"Content-type": "text/lua",
"spawn_args": json.dumps(spawn_args),
}
conn = http.client.HTTPConnection("192.168.31.72:46952") # Адрес и порт устройства
conn.request("POST", "/spawn", data.encode('utf-8'), headers) # Кодировать data в UTF-8
response = conn.getresponse()
print(response.status, response.reason) # Использовать функцию print()
data = response.read()
print(data.decode('utf-8')) # Декодировать ответ и вывести его через print()
conn.close()