Wykonywanie komendy linux przez skrypt php

szymhal | 2017-09-16 16:32:52 UTC | #1

Cześć,
posiadam aplikację bota na serwerze TeamSpeak. Chciałbym, abym z poziomu przeglądarki mógł restartować/włączać/wyłączać tego bota. W tym celu stworzyłem w katalogu root 3 pliki: ./botstart.sh ./botstop.sh ./botrestart.sh.
Potem przystąpiłem do tworzenia strony www i w sumie to tyle, bo dalej nie wiem co i jak :smiley:
Pomoże mi ktoś zrobić prostą, bo nie zależy mi na wyglądzie, tylko na funkcjonalności strony.
Klikam w guzik start, wykonuje komendę ./botstart.sh. w guzik stop komendę ./botstop.sh etc..
Ktoś wie jak to zrobić? Mam drobny styl przycisku, można zastosować.

button {
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
cursor: pointer;
width: 100%;
}

button:hover {
opacity: 0.8;
}

Z góry dzięki za pomoc.


Hank | 2017-09-16 17:44:21 UTC | #2

Moższ do tego użyć SSH2, załączam link do dokumentacji:
http://php.net/manual/en/book.ssh2.php
Miłej zabawy :slight_smile:


szymhal | 2017-09-16 18:48:05 UTC | #3

https://hastebin.com/ijapipokug.xml
Tak wygląda mój kod, lecz komendy nadal nie są wykonywane, ale łączenie się działa.


szymhal | 2017-09-17 08:35:06 UTC | #4

Any suggestions?


Nieznajomy11 | 2017-09-17 08:39:02 UTC | #5

Podaj absolutny path


szymhal | 2017-09-17 08:45:31 UTC | #6

$stream = ssh2_exec($connection, '/root/./botstart.sh');
W ten sposób?
To również nie działa, chociaż, że w konsoli putty normalnie się wykonuje.


Nieznajomy11 | 2017-09-17 08:55:06 UTC | #7

a od kiedy użytkownik apache czy tez www-data ma dostep do /root? :>

a dobra, tam jest laczenie, ale w kazdym razie to tez wazne

ja bym umiescil to poza /root w jakims innym folderze i sprawdzil podajac absolutny path bez jakichs dziwnych kropek :P


szymhal | 2017-09-17 09:02:36 UTC | #8

W katalogu /home/user/ są utworzone trzy pliki o których już pisałem (start, stop, restart).
https://hastebin.com/zigabicoqu.xml <- tak wygląda plik index.php
Komendy nadal się nie wykonują, a pliki mają odpowiednie uprawnienia.
Gdy loguję się na konto usera, normalnie mogę wykonywać w/w komendy.


Nieznajomy11 | 2017-09-17 09:03:25 UTC | #9

czemu ta kropke tak dziwnie stawiasz? :thinking:

probowales wstawic /bin/bash /home/user/botstop.sh?


szymhal | 2017-09-17 09:08:18 UTC | #10

Wstawiając nawet taką komendę - nie jest ona wykonywana.

function queryConnOn(){
$connection = ssh2connect(‘adres ip’, 22);
ssh2
authpassword($connection, ‘user, ‘password’);
$stream = ssh2
exec($connection, ‘/bin/bash /home/user/botstart.sh’);
}
function queryConnOff(){
$connection = ssh2connect(‘adres ip’, 22);
ssh2
authpassword($connection, ‘user, ‘password’);
$stream = ssh2
exec($connection, ‘/bin/bash /home/user/botstart.sh’);
}
function queryConnRestart(){
$connection = ssh2connect(‘adres ip’, 22);
ssh2
authpassword($connection, ‘user, ‘password’);
$stream = ssh2
exec($connection, ‘/bin/bash /home/user/botstart.sh’);
}


Aylin | 2018-07-06 11:27:36 UTC | #11