Jump to content
php.lv forumi

Kā no php izpildīt shell vai python kodu un iegut atbildi ?


Recommended Posts

Sveiki!

Man ir sekojoša problēma, neprotu atgūt datus ko atgriež python kods no konsoles.

Situācijas apraksts:

Raspberry PI ir pievienoti seši mitruma / temperatūras sensori un vēlos dzīvos datus atēlot admina panelī, lai nebūtu jāčeko tabulas kuras tiek atgriestas no RRD kā png faili.

Lai nolasītu sensorus no konsoles jāizmanto adafruit komanda - sudo python Adafruit_DHT.py <sensora tips> <pins>

tas viss forši strādā un konsolē atgriež šādu tekstu  - Temp=19.7*  Humidity=35.5%

 

Viss ko es vēlos, lai šādu pašu tekstu man izmet php lapā, mocos ar shell_exec  un exec, neatgriež neko līdzīgu tam ko no konsoles

uztaisīju pat shell skriptu kurā ir python komanda uz failu - tas pats, 0 rezultāta, konsolē palaižot šo shell skriptu viss notiek.. Principā man trūkst variantu kā to korektāk izdarīt.. Saprotams ka katram sensoram taisit savu shell skritpu kuru izsaukt no php ir nekorekti, perfekti būtu to python komandrindu izpildīt no paša php un turpat ar echo parādīt šo vērtību..

 

Cerams esmu izteicies pietiekami skaidri un saprotami..

Ja kādam ir kas iesakāms tad lūdzu, principā der arī super nedroši varianti jo raspberrijs pēcāk dzīvos autonomi bez interneta..

 

 

Edited by analgins
Link to post
Share on other sites
  • Replies 43
  • Created
  • Last Reply

Top Posters In This Topic

Es neesmu spēcīgs iekš php, dokumentāciju lasīju, to uzgāju vienā no googles rezultātiem, bet man nelīp kopā tas kods, nesaprotu kur ir problēma.

Patreiz iekš php faila ir sekojošais

<?php
$out = array();
echo exec('python.sh',$out);
echo $out;
?>

iekš python.sh ir sekojošais

sudo python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12

tas protams atgriež tukšu lapu ar tekstu Array

python.sh skriptam chmods ir 755 un normālā situācijā, izpildot to no konsoles tas atgrieztu augstāk minēto rindiņu.

Edited by analgins
Link to post
Share on other sites

šo linku arī pa dienu biju izlasījis, vienīgais kas no tā mainījās, ir ka parādījās kaut kāds skaitlis kas neko neizsaka..

 

$command = '/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12';
exec($command, $out, $status);
echo $out;
echo $status;

$out atgriež Array

$statuss atgriež skaitli 126

Link to post
Share on other sites

grūti tā attālināti off-line iejusties, bet mēģināju uz ieslēgtā Raspberry, kur gan nav pieslēgti nekādi devēji, tāpēc AdafruitDHT.py skripts 5x nodrukā "Hello, World!":

#!/usr/bin/env python3

print('Hello, world 1!\n')
print('Hello, world 2!\n')
print('Hello, world 3!\n')
print('Hello, world 4!\n')
print('Hello, world 5!\n')

attiecīgi:

<?php
$out = array();
echo exec('./AdafruitDHT.py',$out);
foreach($out as $outputStr)
    echo $outputStr . "\n";
?>

gan lokāli izsaucot ar:

php af.php

gan

http://192.168.0.8/af.php

izsniedz:

Hello, world 1!

Hello, world 2!

Hello, world 3!

Hello, world 4!

Hello, world 5!

 

Link to post
Share on other sites

Tas skaitlis ir exit status tavai komandai. http://tldp.org/LDP/abs/html/exit-status.html

0 nozīmētu ka viss ir okay. 126 ir kkāds errors.

Man tas sudo calls liekas aizdomīgs, pamēģini bez. Tavam skriptam obligāti vajag root tiesības?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...