Przycisk na stronie uruchamiający plik .sh

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
3a0a2b3d00eb17e98e613e2577bc0c74|690x93

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?
369d59bdab097c508d820d58da50d85e|690x338

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
f3e637562e2098bdbb3739bb9c1824c8|690x145

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

394dc947a6cc97da61b1e1b5b9c8dcc4|690x48

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.