Ajax - update webu

Sekcia: Programovanie 27.12.2014 | 21:09
Bobo   Návštevník

Chcem vas poprosit o radu. Potreboval by som vystup z python skriptu dostat na web. Po zatlaceni tlacidla volam funkciu test(),ktora precita subor print.py. Precita ho uplne cely a text mi potom zobrazi alert. Lenze ja by som chcel ziskat z toho skriptu chcel dostat iba vystup a to Ahoj alebo hodnotu nejakej premennej,ak by tambola.

Tu je funkcia:

function test(){
var xhr = new XMLHttpRequest();
xhr.open("POST", "print.py", true);
xhr.onreadystatechange = function(){
        if (xhr.readyState == 4 && xhr.status == 200){
                alert("Je to tu: " + xhr.responseText);
}
};
xhr.send(null);

}

a tu je ten python skript:

#!/usr/bin/python

print "Ahoj"

    • RE: Ajax - update webu 27.12.2014 | 22:44
      Avatar Milan Dvorský debian,mint kde,android  Administrátor

      prejdi na jquery, lepsia dokumentacia, menej balastu, ako mas ty (tiez som na to presiel) ...napr. si daj vyechovat pole , z pola pouzijes len to, co potrebujes ...

    • RE: Ajax - update webu 28.12.2014 | 00:04
      Avatar bedňa LegacyIce-antiX  Administrátor

      Nejsu pythonista, ale nemalo by to byť

      #!/usr/bin/python
      
      >>> "Ahoj"

      Potrebuješ to poslať na štandartný výstup.

      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Ajax - update webu 28.12.2014 | 18:25
      Avatar Bobo   Návštevník

      Ok. Dik.To jquery vyzera celkom zaujimavo. Idemto skusit

      • RE: Ajax - update webu 28.12.2014 | 18:49
        Avatar bedňa LegacyIce-antiX  Administrátor

        Som rád že zabralo.

        On ten čistý JavaScript nieje zlý, podobá sa na zápis s C/Python, tak už podľa preferencií.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Ajax - update webu 29.12.2014 | 01:50
      Avatar Bobo   Návštevník

      Ahoj, narazil som na problem s ktorym sa trapim cely den. Pomocou Jquery spustam python skript. Pokial je ten skript jednoduchy napr. ma funkciu Print, tak mi to bezproblemov funguje a printne mi na web to co chcem. Avsak python skript  ktory ovlada LED na urcitom pine, nefunguje. Zistil som, ze pokial ho chcem spustit pod uzivatelom www-data tak sa nevykona pretoze python modul pristupuje na nejake systemove kniznice. Samozrejme prava na ten python skript som nastavil, ale nepomohlo. Neviem ako spravim, aby python skript Jquery spustal pod rootom. 

      • RE: Ajax - update webu 29.12.2014 | 10:24
        Avatar toto pole je povinne   Návštevník

        A ako si nastavil tie prava? Setuid ti nebude fungovat. Normalne Unix distra ti to budu ignorovat ak sa nachadza #! interpreter. Takze si budes musiet napisat nejaky wrapper.

    • RE: Ajax - update webu 29.12.2014 | 12:22
      Avatar Bobo   Návštevník

      Nie som v Linuxe az tak zbehly, tak priznam sa, ze Ti moc nerozumiem. Aky wrapper ? Prava som nastavoval s chmod a tiez som skusil aj zmenit vlastnika a skupinu daneho pzthon skriptu na www-data. Tiez som pridal do sudousers www-data ALL=(ALL) NOPASSWD: ALL. Nic nepomohlo.

      • RE: Ajax - update webu 29.12.2014 | 13:21
        Avatar bedňa LegacyIce-antiX  Administrátor

        Klikaj na tlačítko odpovedať, je lepšie vidieť komu odpovedáš .)

        Wrapper by sa dalo po slovensky povedať ako medzivrstva/obálka. Proste napíšeš si systémový program mimo webserver, ktorý bude mať práva pristupovať k hardvéru (tomu pinu). To si otestuj a pokiaľ to bude fungovať, tak tým skriptom na servere budeš volať ten program. Dúfam že je to takto zrozumiteľné.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • RE: Ajax - update webu 29.12.2014 | 13:38
          Avatar Bobo   Návštevník

          Aha, asi rozumiem. Nieco podobne som asi uz skusal. Spravil som si PHP skritp, ktory som volal. Ten PHP skript mal v sebe exec('sudo /var/www/cgi-bin/test.py') a vtedy to fungovalo. Chcel som vsak ten PHP skript vynechat a spustat python skript priamo, pretoze urcite budem chciet z Jquery odovzdat pythonu nejake argumenty a budem ocakavat od neho nejaky vystup. Ked to spravim cez PHP, tak pravdepodobne vsetko toto budem musiet osetrit aj v tom PHP skripte.

          • RE: Ajax - update webu 29.12.2014 | 13:40
            Avatar Bobo   Návštevník

            hm, klikol som na odpovedat a nevidim moc rozdiel.

            • RE: Ajax - update webu 29.12.2014 | 19:29
              Avatar WlaSaTy   Návštevník

              Na ľavo sú také jemné čiaročky ktoré ukazujú na ktorý príspevok reaguješ. Trochu je to vidno aj v odtieni pri čase príspevku. Je to prehľadnejšie ako plácať odpovede štýlom PHPBB.

          • RE: Ajax - update webu 30.12.2014 | 00:22
            Avatar bedňa LegacyIce-antiX  Administrátor

            Ten rozdiel určite vidíš odsadením zľava.

            Musíš si spraviť "sydtémový" skript(program) ktorý bude obsluhovať hardvér a potom z Python skriptu ho volať s parametrami. Samozrejme ten skript na serveri môže dostať späť údaje z toho z toho systémového skriptu.

            Buď chceš problém riešiť, alebo si stáť za svojim nefungujúcim riešením, ktoré obídeš len pokazením všetkých bezpečnostných postupov čo ti Linux poskytuje. Tak počítam že ďalší dotaz v poradni bude, "hocikto mi spúšťa ten skript na diaľku ako to zabezpečím"?

            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Ajax - update webu 29.12.2014 | 19:10
      Avatar Bobo   Návštevník

      Mam este jednu otazku, ale nesuvisi az tak s touto temou. Pomocou jquery spustim python script, ktory rozsvieti LED, vrati mi hodnotu 1 (stav pinu) a ukoci sa. Ak vsak spustim skript na kontrolu stavu, tak mi vrati hodnotu 0 aj ked LED svieti. Asi je to sposobene tym, ze o rozvietenie sa postaral skript, ktory sa ukoncil a novy skript s tym nema nic spolocne. Ako sa toto da riesit ? Mna napadlo napr. pouzit databazu sqlite a vzdy do nej zapisat aktualny stav. Nasledne pri zistovani stavu pinu by skript cital z databazy. 

      • RE: Ajax - update webu 29.12.2014 | 22:29
        Avatar Milan Dvorský debian,mint kde,android  Administrátor

        jedna ti vratilo, ze ju zapol (tipujem, ze oba commandy boli zhodne) ... neviem, ako vyzera ten python prikaz, ale asi najlepsie je to riesit cez to volanie system('python ....');