Страница 1 из 3
Передать данные из питон скрипта в МЖД
Добавлено: Сб сен 02, 2017 2:06 pm
Gelezako
Есть питоновский скрипт, результатом которого является число. Мне это число нужно передать в МЖД для обработки. Подскажите как это правильно сделать. Всё что приходит на ум это питоновский скрипт сохраняет число в файл, а потом на пхп читать этот файл. Но возможно есть более элегантное решение. Спасибо.
Re: Передать данные из питон скрипта в МЖД
Добавлено: Сб сен 02, 2017 2:20 pm
skysilver
Можно url дернуть:
Код: Выделить всё
import urllib
current_url = 'http://192.168.1.10/objects/?script=json_js&mac=%s&rssi=%s' % (list_beacon[0],list_beacon[1])
urllib.urlopen(current_url)
В этом примере вызывается сценарий json_js и ему передаются два параметра. По аналогии можно сразу свойству объекта значение присваивать.
Либо в самом MJD запускать питоновский скрипт через exec():
Код: Выделить всё
$value = exec('sudo python путь_к_питоновскому_скрипту');
Re: Передать данные из питон скрипта в МЖД
Добавлено: Сб сен 02, 2017 3:06 pm
Gelezako
вы не поняли, мне не надо запускать скрипт средствами МЖД, мне надо в МЖД передать результат работы скрипта.
Re: Передать данные из питон скрипта в МЖД
Добавлено: Сб сен 02, 2017 3:07 pm
skysilver
Ну а первый вариант чем тогда не устроил?
Re: Передать данные из питон скрипта в МЖД
Добавлено: Вс сен 03, 2017 1:52 pm
Gelezako
пока так и сделал, я не опытный девелопер и мне почему-то показалось что это кривое решение
но если ни у кого не появилось другого решения, то наверно это норм

Re: Передать данные из питон скрипта в МЖД
Добавлено: Вс сен 03, 2017 2:42 pm
skysilver
В чем кривость использования штатного api MJD? Или вы сделали по своему, через промежуточный файл? ))
Re: Передать данные из питон скрипта в МЖД
Добавлено: Вс сен 03, 2017 3:28 pm
Gelezako
да, сделал через промежуточный файл и именно этот способ я назвал "кривым", а не api MJD. Втом то и дело, что я не знаю как использовать api MJD. На сколько я понял, вот в этом примере
Код: Выделить всё
import urllib
current_url = 'http://192.168.1.10/objects/?script=json_js&mac=%s&rssi=%s' % (list_beacon[0],list_beacon[1])
urllib.urlopen(current_url)
в питоноском скрипте вызывается сценарий из МЖД. Тут передаётся 2 параметра, и то что я хочу передать необходимо указать вместо переменной list_beacon ? Если да, то как мне обращаться к ней внутри сценария мжд?
Re: Передать данные из питон скрипта в МЖД
Добавлено: Вс сен 03, 2017 3:55 pm
skysilver
Все верно понимаете. Возможно, проще будет не сценарий вызывать, а сразу свойству объекта присваивать значение:
Код: Выделить всё
import urllib
current_url = 'http://192.168.1.10/objects/?object=ThisComputer&op=set&p=MyValue&v=%s' % (list_beacon[0])
urllib.urlopen(current_url)
ThisComputer это объект, MyValue это его свойство, list_beacon[0] это переменная в питоновском скрипта, которую и нужно передать в мажордомо. Поменяйте их на свои, ну и ip сервера свой подставить.
Re: Передать данные из питон скрипта в МЖД
Добавлено: Вт сен 05, 2017 10:00 pm
Gelezako
skysilver ваш код отлично работает из под админа (у меня win 10), но пхп функция exec() не может запустить питоновский скрипт без админских прав. МЖД я запускаю под админом, но php.exe по какой-то причине запускается под моим локальным пользователем (это я вижу в диспетчере задач) и из-за этого функция exec() не хочет запускать мой скрипт. Подскажите как php.exe заставить запускаться под админом в момент старта всей системы МЖД либо по другому как-то решить эту проблему. Спасибо.
Re: Передать данные из питон скрипта в МЖД
Добавлено: Ср сен 06, 2017 1:37 am
Sasha95
Gelezako писал(а):skysilver ваш код отлично работает из под админа (у меня win 10), но пхп функция exec() не может запустить питоновский скрипт без админских прав. МЖД я запускаю под админом, но php.exe по какой-то причине запускается под моим локальным пользователем (это я вижу в диспетчере задач) и из-за этого функция exec() не хочет запускать мой скрипт. Подскажите как php.exe заставить запускаться под админом в момент старта всей системы МЖД либо по другому как-то решить эту проблему. Спасибо.
shell_exec попробуйте так, у меня так получалось.