Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: NikolaiTalev в Nov 03, 2010, 22:15



Титла: изпълняване на код в терминал от web сайт
Публикувано от: NikolaiTalev в Nov 03, 2010, 22:15
Здравейте написах си едно скриптче за сваляне от vbox7 и  го направих да ми вади линк който трябва да се въведе в терминала за да  гледам клипа директно през SMplayer тоест:
smplayer "http://media11.vbox7.com/s/69/69f670a2.flv"

Въпроса ми е мога ли да го пускам директно чрез клик (а не да го копирам в терминала) чрез някаква пхп команда или js ???


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: Acho в Nov 04, 2010, 06:42
Скрипта е записан във файл (и то изпълним), нали така ? Ако не ти се иска да пускаш самия файл, му направи символен линк: ln -s ...... ....... и стартирай линка.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: NikolaiTalev в Nov 04, 2010, 11:14
Не грешката е моя , явно не съм обяснил добре какво искам .... идеята е следната този пхп скрипт за свалянето ще бъде в сайт и аз искам който ползва линукс да може да си го стартира през smplayer-a (ако има такъв) чрез един клик

http://78.130.233.163/vbox.php

Тази цялата операция е заради бъгавия флаш плугин като го гледам през smplayera все едно не е флаш процесора си спи спокойно  ;)


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: b2l в Nov 04, 2010, 11:17
Код
GeSHi (PHP):
  1. shell_exec  ( string $cmd  )


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: v_badev в Nov 04, 2010, 14:46
По-скоро трябва да го направиш на GreaceMonkey скрипт и да си работи директно в браузъра. Нещо подобно на тези:
http://userscripts.org/scripts/show/50771
http://userscripts.org/scripts/show/24999

Другият вариант е да напишеш екстеншън за Firefox който да изпълнява шел скрипта.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: b2l в Nov 04, 2010, 14:53
Другият вариант е да напишеш екстеншън за Firefox който да изпълнява шел скрипта.

И ако не си с FF какво правим? Ако си с Opera или Chrome и за тях ли да пише екстеншъни?
Това се прави само с php, но сега нямам време да го напиша. Довечера ако се освободя може да го драсна.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: v_badev в Nov 04, 2010, 16:17
Ако си с links и PHP няма да помогне :P
За това и като първи вариант съм предложил скрипт за GreaceMokey. Това поне се поддържа от почти всички модерни браузъри. Предимството пред решение с PHP е че ще си работи автоматично, няма да се налага да ходиш на други сайтове за да свалиш клипа.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: b2l в Nov 04, 2010, 16:29
@NilkolaiTalev я покажи скрипта който си направил.

PS: Ми ти почти си го направил, само че вместо да го правих с <a href> добави php функцията като й зададеш да отваря линка който ти връща vbox.php.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: NikolaiTalev в Nov 04, 2010, 16:34
Не то идеята не е само за мен, а и не става въпрос за сваляне, а за онлайн гледане. И който добави линка от vbox ( или в последствие от където и де е) да може да гледа клипа на примерно SMplayer  :)

@backtolife помогни ми ако ти остане време че нещо бъркам  >:(



Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: NikolaiTalev в Nov 04, 2010, 16:37
Код
GeSHi (PHP):
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>Сваляне от Vbox7</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6.  
  7. </head>
  8.  
  9. <body>
  10. <?php
  11. error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
  12. if($_POST['submit'] and strlen($_POST['url'])>0){
  13.   $file = $_POST['url'];
  14.   $number = explode(":", $file);
  15.   $i = substr($number[2],0 ,2);
  16.  
  17.   if(fopen("http://media.vbox7.com/s/$i/$number[2].flv","r")){
  18.      $url = "http://media.vbox7.com/s/$i/$number[2].flv";
  19.   } else {
  20.      for($ii = 2; $ii <= 21; $ii++)
  21.      {
  22.         if($ii < 10)
  23.         {
  24.            if(fopen("http://media0$ii.vbox7.com/s/$i/$number[2].flv", "r"))
  25.            {
  26.               $url = "http://media0$ii.vbox7.com/s/$i/$number[2].flv";
  27.            }
  28.         } else {
  29.            if(fopen("http://media$ii.vbox7.com/s/$i/$number[2].flv", "r"))
  30.            {
  31.               $url = "http://media$ii.vbox7.com/s/$i/$number[2].flv";
  32.            }
  33.         }    
  34.      }
  35.   }
  36.  
  37.   echo "<center><b><font size='6'><a style='text-decoration:none; color:#aaa;' href='".$url."'>Свали видеото!</a></font></center>";
  38. $out = "smplayer \"$url\"";
  39.  
  40. $output = shell_exec( "$out $cmd");
  41. system("echo $output");
  42. print $output;
  43. } else {
  44.   echo '<center><form method="post" action="">
  45.   <b>Линк към клипа (http://vbox7.com/play:ed7caef8)</b><br>
  46.   <input type="text" name="url" size="35" value=""><br>
  47.   <input type="submit" name="submit" style="font-style: bold;" value="Download">
  48.   </form></center><br />';
  49. }
  50.  
  51. ?>
  52. </body>
  53. </html>
  54.  


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: b2l в Nov 04, 2010, 16:38
Не то идеята не е само за мен, а и не става въпрос за сваляне, а за онлайн гледане. И който добави линка от vbox ( или в последствие от където и де е) да може да гледа клипа на примерно SMplayer  :)

@backtolife помогни ми ако ти остане време че нещо бъркам  >:(

Човек реши какво искаш. "Оналайн гледане" - това streaming ли ще рече? Искаш да добавиш линка и да го гледаш в браузъра?
Или като цъкнеш на "Свали" (както е сега) да се отваря SMPlayer-а и да тръгва в него?


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: NikolaiTalev в Nov 04, 2010, 16:42
Не то идеята не е само за мен, а и не става въпрос за сваляне, а за онлайн гледане. И който добави линка от vbox ( или в последствие от където и де е) да може да гледа клипа на примерно SMplayer  :)

@backtolife помогни ми ако ти остане време че нещо бъркам  >:(

Човек реши какво искаш. "Оналайн гледане" - това streaming ли ще рече? Искаш да добавиш линка и да го гледаш в браузъра?
Или като цъкнеш на "Свали" (както е сега) да се отваря SMPlayer-а и да тръгва в него?

Вторият вариант няма да се запазва нали ? След затварянето на плеара няма да го има нали?

В момента като поставя това :smplayer "http://media11.vbox7.com/s/69/69f670a2.flv"
в терминал се стартира май със стрйминг нали?


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: b2l в Nov 04, 2010, 22:43
Код
GeSHi (Apache configuration):
  1. root@eclipse:/var/log/apache2# cat error.log | grep smplayer
  2. smplayer: cannot connect to X server
Това е едната грешка, в последствие разбрах, че нямам права да с php-то да изпълнявам shell команди:

Код
GeSHi (Apache configuration):
  1. Couldn't resolve name for AF_INET6: media08.vbox7.com
  2. open: No such file or directory
  3. [MGA] Couldn't open: /dev/mga_vid
  4. open: No such file or directory
  5. [MGA] Couldn't open: /dev/mga_vid
  6. [VO_TDFXFB] Can't open /dev/fb0: Permission denied.
  7. [VO_3DFX] Unable to open /dev/3dfx.
  8. vo: couldn't open the X11 display ()!
  9. [vdpau] Could not open dynamic library libvdpau.so.1
  10. vo: couldn't open the X11 display ()!
  11. VO XOverlay need a subdriver
  12. vo: couldn't open the X11 display ()!
  13. vo: couldn't open the X11 display ()!
  14. vo: couldn't open the X11 display ()!
  15. commandline read: mplayer
  16. commandline read: http://media08.vbox7.com/s/f5/f5a09830.flv
  17.  
  18.   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.8 |~~~~~~~~~~~~~~~~~~~~~~~~~~
  19.        (c) 2001-2008  The world wide DirectFB Open Source Community
  20.        (c) 2000-2004  Convergence (integrated media) GmbH
  21.      ----------------------------------------------------------------
  22.  
  23. (*) DirectFB/Core: Single Application Core. (2010-04-09 11:08)
  24. (!) Direct/Util: opening '/dev/fb0' failed
  25.    --> Permission denied
  26. (!) DirectFB/FBDev: Error opening framebuffer device!
  27. (!) DirectFB/FBDev: Use 'fbdev' option or set FRAMEBUFFER environment variable.
  28. (!) DirectFB/Core: Could not initialize 'system_core' core!
  29.    --> Initialization error!
  30. [VO_SDL] SDL initialization failed: DirectFBCreate: Initialization error!.
  31. Can't open /dev/fb0: Permission denied
  32. [fbdev2] Can't open /dev/fb0: Permission denied

Тука някъде във форума се въртеше една тема на един дето искаше с php да изпълни sudo и после паролата, ама не мога да я намеря в момента. Както и да е де, но тази грешка, че не може да се върже с X-а ми е много странна. При windwos-а няма такива работи.
Код
GeSHi (PHP):
  1. exec('c:\program files\winamp\winamp.exe');
Това там работеше.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: NikolaiTalev в Nov 04, 2010, 23:12
и аз това се питах дали не са необходими рут права ама тъй като като поставях това
 smplayer "http://media11.vbox7.com/s/69/69f670a2.flv" в терминала не ми бяха необходими права за да стартира плеара и за това си мислих че е възможно  :)

А възможно ли е като се натисне свали да не го сваля ами да го отваря, както питат някои  браузари като музила ,а при хрома директно го сваля няма ли как да се забрани свалянето а директно да го отваря


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: v_badev в Nov 05, 2010, 12:19
backtolife, имаш права да старираш команди. Това което си пуснал е точно изхода от smplayer.
Обаче това което си написал ще работи ако на този компютър на който върви apache-то има работещ X и инсталиран smplayer. Също ще трябва потребителят с който работи apache-то да може да ползва X-a. Тоест при стартирането му ще трябва да се направи нещо подобно на това което прави sux ($2). Самият mplayer може да работи и без X, но smplayer е Qt програма и не може.

Друг е въпроса за какво ти е SMPlayer да плейва клипче на сървъра, където няма кой да го гледа. Поне от първият пост на NilkolaiTalev оставам с впечатление че иска да изпълни нещо на клиентската машина, а не на сървъра. Това може да стане само чрез разширение за браузъра. Никой браузър не допуска произволен сайт да стартира изпълними файлове.

@NilkolaiTalev -  не ти трябват root права. Това кои файлове се свалят и кои се отварят си е настройка на браузъра.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: niakoi в Nov 05, 2010, 12:52
привет,
така изпълнена командата действително би опитала да пусне плеъра на сървъра, което за мен няма особена идея,
по-скоро след като го свалиш (при успех разбира се), промени content-type на такъв за видео стрийминг и върни байнари на филмчето (тук гугъл ще е най-полезен), след което (по желание) си изтрий сваления файл

поздрави
нас


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: b2l в Nov 05, 2010, 14:23
backtolife, имаш права да старираш команди. Това което си пуснал е точно изхода от smplayer.
Обаче това което си написал ще работи ако на този компютър на който върви apache-то има работещ X и инсталиран smplayer. Също ще трябва потребителят с който работи apache-то да може да ползва X-a.

Сега-а-а-а, значи - аз в началото се подведох и помислий, че NilkolaiTalev иска приложението да работи за него, т.е. отваря си browser-а пише: localhost/vbox7.php пейства си линка и цъка на бутона който ще му пусне SMplayer-а. Грешките които показах са от лаптоп-а ми на който имам apache, имам php имам и Х. Но все пак не можах да направя апача да пуска Х приложения. Снощи - някъде в късни доби прочетох пак темата и осъзнах, че той иска SMplayer-а да се стратира на client side. В Windows това става с ActiveX (ако не се лъжа), за линукса ми е Хикс (Х) малко как може да стане освен с някоя стара версия на FF в която имаше security issues и можеше да се изпълняват разни програми през browser-а.


Титла: Re: изпълняване на код в терминал от web сайт
Публикувано от: v_badev в Nov 05, 2010, 19:51
Ми както написах и преди ти трябва разширение за браузъра. Поне при Firefox те могат да правят всичко (точно като ActiveX). Не знам как е положението с Opera и Chrome, но вероятно и там може да се направи.
А в първото ми мнение съм дали линкове за нещо подобно което се получава само с greacemonkey скрипт. Премахва се флаш обекта от dom-a и се заменя със самият файл, така че браузъра да си зареди плъгин (totem, vlc, mplayer-plugin) и да си плейне файла в него. Няма да е smplayеr, но ще е по-добре от флаш.