Skrypty Bash w PHP.

Instalacja i konfiguracja oprogramowania sieciowego.
Awatar użytkownika
ZajOnDz
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 27 lis 2009, 15:26
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Kontakt:

Skrypty Bash w PHP.

Post autor: ZajOnDz »

Cześć :) Znów wam trochę po zawracam głowę :pt36:
Sprawa prezentuje się następująco:
Uruchamiam polecenia Basha w php poprzez polecenia Exec, Shell_exec, System.Polecenia whoami i ls działają bezproblemowo, ale nie działa mi polecenie np. "rhythmbox-client --next" zmieniające piosenkę w programie Rhythmbox.
Nawet jeśli utworzę osobny skrypt Bash z poleceniem zmiany piosenki to, gdy go uruchamiam nic się nie dzieje. Oczywiście to polecenie w konsoli działa jak należy.
Stworzyłem alias w pliku Bash_aliases. Uruchamianie aliasu w konsoli działa, lecz przez php nie działa.

Może nie jest to jakąś ważną sprawą, ale fajnym bajerem :p
Zwykle na noc włączam sobie muzykę, a czasami włączają mi się zbyt ostre piosenki :p dla tego do ich zmiany wykorzystałbym telefon i serwer Apache, lecz nie mogę nigdzie znaleźć nic sensownego na ten temat co by rozwiązało mój problem...

Polecenie - rhythmbox-client --print-playing-format %ta - Wywołane w php również nic mi nie wyświetla.
Samo polecenie "rhythmbox" uruchamia program, lecz "rhythmbox-client" nie wywołuje żadnej reakcji.
Może powinienem użyć jakiegoś innego polecenie w php po za System i Exec?

Z góry dzięki za chęci pomocy :)
Pozdrawiam :)
Awatar użytkownika
ka_o_3991
Przyjaciel
Przyjaciel
Posty: 864
Rejestracja: 01 wrz 2007, 13:34
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86_64

Re: Skrypty Bash w PHP.

Post autor: ka_o_3991 »

Apache zapewne działa z poziomu innego usera, może rhythmbox-client wymaga tego samego usera i dlatego nie działa? sprawdż czy zwraca jakieś błędy ;)
(tak tylko zgaduję, u klienta w delegacji jestem i nie mam jak sprawdzić ;)
Awatar użytkownika
ZajOnDz
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 27 lis 2009, 15:26
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Kontakt:

Re: Skrypty Bash w PHP.

Post autor: ZajOnDz »

Masz rację, nie sprawdziłem tego... Nawet mi to do głowy nie przyszło :p
Co prawda jeszcze nie wiem jak zmienić usera z którego ma korzystać php, ale pewnie coś znajdę :p
Na razie sprawdziłem to robiąc osobny skrypt basha. Gdy go odpalam jako ja to zmienia mi piosenkę, lecz gdy odpalę przez sudo to otwiera mi nowego Rhythmboxa :p Więc zapewne w tym problem...

Tak więc, dzięki za pomoc :)
Jeśli tylko jakoś mogę to chętnie się odwdzięczę :p
Miłego wieczoru :)

@edit

Hm... Chyba sobie jednak sam nie poradzę :|
Znalazłem parę informacji w necie, ale w dalszym ciągu nie potrafię tego zrobić...
Mogę zmienić w pliku /etc/apache2/envvars użytkownika na siebie, ale wtedy apache nie chce się uruchomić. Domyślam się, że potrzebuje hasła, ale nie mogę za cholerkę znaleźć, gdzie można wpisać jakie jest hasło użytkownika :p
Znalazłem też możliwość - sudo su "zajondz"... Co prawda gdy w skrypcie na stronie zmienie użytkownika na siebie i wykonam "whoami" to wyświetla, że jest zalogowany jako zajondz, lecz rhythmbox ciągle nie chce zmieniać piosenek :p
A teraz, gdy z konsoli spróbowałem uruchomić rhythmboxa jako użytkownik www-data to otrzymałem coś takiego :p a próbowałem, żeby sprawdzić, czy gdy rhythmbox będzie uruchomiony przez tego użytkownika to czy przez php wtedy będę mógł zmieniać piosenki :p Bo jeśliby tak było w taki sposób działało to mogłoby tak zostać. Uruchamiałbym po prostu zawsze rhythmboxa jako www-data :p

Kod: Zaznacz cały

$ whoami
www-data
$ rhythmbox
No protocol specified
No protocol specified

(gst-plugin-scanner:12768): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to open display ':0'

** (rhythmbox:12767): CRITICAL **: unable to create '/var/www/.cache/dconf'; dconf will not work properly.
No protocol specified
No protocol specified
Nie można otworzyć ekranu: 
Wykonanie polecenia "rhythmbox --help" wyświetli pełną listę dostępnych opcji wiersza poleceń.
$ 
Hm... Nie wierzę, że nie ma na to jakiegoś sposobu :p Pomożecie? :p
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Skrypty Bash w PHP.

Post autor: ethanak »

Próbowałeś suphp?
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: Skrypty Bash w PHP.

Post autor: jacekalex »

ethanak pisze:Próbowałeś suphp?
suphp - to IMHO ciężkie nieporozumienie.

Lepiej virtualhost + suexec na odpowiedniego pacjenta.

Sznurek:
https://wiki.archlinux.org/index.php/Ap ... tual_Hosts
Ostatnio zmieniony 13 wrz 2013, 10:54 przez jacekalex, łącznie zmieniany 2 razy.
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Skrypty Bash w PHP.

Post autor: ethanak »

Tyż prawda.
W sumie jeszcze prościej - pięć linijek w Pythonie i serwerek na jakimś wysokim porcie odpalany z usera (np. ze startem sesji). PHP tu niepotrzebny bo serwer może bezpośrednio odpalić polecenie. Jeśli ktoś zna Pythona to szybciej się coś takiego zrobi niż skonfiguruje Apacza...
Awatar użytkownika
ZajOnDz
Sędziwy Jeż
Sędziwy Jeż
Posty: 32
Rejestracja: 27 lis 2009, 15:26
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Kontakt:

Re: Skrypty Bash w PHP.

Post autor: ZajOnDz »

Hm... No to trochę mnie skołowaliście :p
Pythona nie znam, ale myślę, że to raczej nic skomplikowanego do nauki, jak każdy inny język programowania tylko, że ostatnio nie mam na nic czasu :| ale rozejrzę się po necie...

Zaraz zobaczę to suphp i suexec :)

Ethanak. Jeśli nie byłby to dla Ciebie kłopot to byłbym wdzięczny za tę pięć linijek :)
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Skrypty Bash w PHP.

Post autor: ethanak »

ZajOnDz pisze:Ethanak. Jeśli nie byłby to dla Ciebie kłopot to byłbym wdzięczny za tę pięć linijek :)

Kod: Zaznacz cały

sudo apt-get install python-paste
(tak, wiem że to overkill ale nie chce mi się babrać z HTTPServer bo wyjdzie 15 linijek a nie 5)

Kod: Zaznacz cały

#!/usr/bin/env python
#coding: utf-8

import subprocess
from paste import httpserver

def app(env,response):
    response("200 OK", [("Content-Type", "text/plain")])
    if env['PATH_INFO'] == '/fwd':
        subprocess.call(['rhythmbox-client','--next'])
    yield 'OK'
    
httpserver.serve(app,port=5678,host='1.2.3.4')
Zamieniasz port i host na prawidłowe. Odpalasz np:

Kod: Zaznacz cały

wget http://1.2.3.4:5678/fwd
Sprawdzone, ładnie działa.
Awatar użytkownika
ekitowski
Sędziwy Jeż
Sędziwy Jeż
Posty: 51
Rejestracja: 25 sie 2008, 15:03
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME
Kontakt:

Re: Skrypty Bash w PHP.

Post autor: ekitowski »

Ewentualnie biblioteka ssh2 do php i również po sprawie...
http://php.net/manual/en/book.ssh2.php
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 13 gości