Glupikocz | 2020-09-20 14:19:29 UTC | #1
Dobry mam takie pytanie chciałbym utworzyć na stronie przycisk który uruchamia plik .sh na serwerze VPS.
Czyli np na mojej stronie posiadam przycisk “Kliknij mnie” i uruchamia aplikacje np ROBOT dodałem taki skrypt ale coś nie działa.
<?php
if ($_GET['run']) {
exec("/home/robot/starter.sh start");
}
?>
<a href="?run=true">Click Me!</a>
spróbowałem też na serwerze stworzyć plik start.sh umiesciłem go w folderze robota, dodałem do niego
!/bin/bash
php Core.php -i 1
a na stronie zmieniłem na
<?php if ($_GET['run']) { exec("/home/robot/start.sh"); } ?> <a href="?run=true">Click Me!</a>
i nadal nic :roll_eyes:
KrEdEnS | 2020-09-20 17:09:24 UTC | #2
Spróbuj:
echo 'www-data ALL=NOPASSWD: ALL' >> /etc/sudoers
Nieznajomy11 | 2020-09-20 17:08:19 UTC | #3
W jaki sposób ma to pomóc z problemem? Problem to raczej próbowanie odpalenia skryptu, który musi ciągle potem pracować za pomocą funkcji exec z php, co nie ma najmniejszego sensu pod bardzo wieloma względami i zwyczajnie nie ma prawa działać.
Glupikocz | 2020-09-20 18:46:15 UTC | #4
Hmm no ale przecież np TS3AudioBoty jakoś uruchamia sie w screenie i można je włączać przez strone
anon95087592 | 2020-09-20 22:29:01 UTC | #5
Z czego wiem splamy używa API TS3AudioBot a nie exec jak i większość paneli
Glupikocz | 2020-09-20 22:56:40 UTC | #6
Tu nie chodzi akurat o jego panel.
Powiem tak stworzyłem w /var/www/html plik ./start.sh utworzyłem na głównej stronie plik index.php.
Do pliku index.php dodałem oto te linijki podobno to ma działać a jednak nie wykonuje to skryptu
<?php if ($_GET['run']) { exec("/var/www/html/start.sh"); } ?> <a href="?run=true">Start</a>
No i skrypt się nie wykonuje się :roll_eyes:
Edit1. Na serwerze plik ./start.sh normalnie się wykonuję
Edit2. Dodam że wykonując php /var/www/html/start.php też skrypt się wykonuje tylko przez stronę to nie działa
Edit3. Dodałem nawet plik .htaacces a w nim a także nadałem uprawnienia 775
Options +ExecCGI AddHandler cgi-script .sh
anon95087592 | 2020-09-21 07:14:38 UTC | #7
A sprawdź czy czasem execa wyłączonego w PHP nie masz
Glupikocz | 2020-09-21 07:14:30 UTC | #8
Dobra jest to wyłączone teraz jak to włączyć?
w katalogu /etc/php/7.4/fpm i pliku php.ini wydaje się być to włączone
Server version: Apache/2.4.38 (Debian)
Server built: 2020-08-25T20:08:29
PHP 7.4.10 (cli) (built: Sep 9 2020 06:54:34) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.10, Copyright (c), by Zend Technologies
Edit1. Dobra udało się go włączyć i działa jak widać wiec dlaczego nie działa skrypt włączający robota?
Edit2. Hmm okazało się ze po dodaniu pliku .htaacces i tego wszystkiego wystarczyło zrobić reboot maszyny…
No nic dzięki za pomoc :heart:
Glupikocz | 2020-09-21 08:45:44 UTC | #9
Ekhem jednak potrzebuje pomocy ponieważ skrypt który wcześniej opisałem działa bez problemu ale teraz chciałbym dodać go do panelu i ło tego nie za bardzo wiem jak to zrobić.
Kod HTML
Kawałek HTML w którym chciałbym włączać ten skrypt
<button class="btn btn-dark"><i class="fa fa-power-off power-on"></i> Włącz aplikację Robot</button>
Mój skrypt php
<?php if ($_GET['run']) { exec("/var/www/html/stop.sh"); } ?> <a href="?run=true">Stop</a>
anon95087592 | 2020-09-21 08:53:39 UTC | #10
Uzyj fetch / axios
Glupikocz | 2020-09-21 10:19:37 UTC | #11
Parda? Mozesz mi to objaśnić albo napisac co i jak bo jeszcze az tak oblatany nie jestem w php
anon95087592 | 2020-09-21 10:53:53 UTC | #12
To jest JS 😉
Glupikocz | 2020-09-21 11:31:24 UTC | #13
Dobra trochę ułatwiłeś sprawę bo wiem co to ale nadal nie wiem jak to stworzyć.
anon95087592 | 2020-09-21 13:00:11 UTC | #14
Pomysł jak to działać ma i wpisz w google axios lub fetch i na buttonach daj onclick
Glupikocz | 2020-09-21 16:55:48 UTC | #15
W tym panelu akurat znalazłem coś takiego tylko nie koniecznie wiem jak to przerobić :smiley:.
Bo tu pisze startApp a w HTML żeby wykonał się ten skrypt jest dodane
I troche ryje mi to banie dlaczego tu jest startStopAPP i jeszcze app-start w button, dodam że jeśli usunie się w button app-start to aplikacja nie wystartuje.
public function startApp() {
if($this->type == 'localhost') {
if(!$this->check['status']) { return $this->error(); }
$config = $this->config;
if(preg_replace('/\D/', '', shell_exec("sudo screen -S TS3AudioBot -Q select . ; echo $?")) == 0) {
return $this->response(false,'Error: app is enabled');
}
shell_exec("cd {$config['path']} && sudo screen -dmS TS3AudioBot dotnet TS3AudioBot.dll");
return $this->response(true,true);
} elseif($this->type == 'externalhost') {
return $this->request('startApp');
}
return $this->response(false,'Error: bad api method');
}
system | 2020-10-23 16:55:50 UTC | #16
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.