Wykonywanie komendy linux przez skrypt php

Zombie
ts3, www
szymhal
szymhal

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 😃 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
Hank

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
szymhal

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

szymhal
szymhal

Any suggestions?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Podaj absolutny path

szymhal
szymhal

$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
Nieznajomy11 Moderator forum.lvlup.pro

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
szymhal

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
Nieznajomy11 Moderator forum.lvlup.pro

czemu ta kropke tak dziwnie stawiasz? :thinking:

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

szymhal
szymhal

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

function queryConnOn(){ $connection = ssh2_connect('adres ip', 22); ssh2_auth_password($connection, 'user, 'password'); $stream = ssh2_exec($connection, '/bin/bash /home/user/botstart.sh'); } function queryConnOff(){ $connection = ssh2_connect('adres ip', 22); ssh2_auth_password($connection, 'user, 'password'); $stream = ssh2_exec($connection, '/bin/bash /home/user/botstart.sh'); } function queryConnRestart(){ $connection = ssh2_connect('adres ip', 22); ssh2_auth_password($connection, 'user, 'password'); $stream = ssh2_exec($connection, '/bin/bash /home/user/botstart.sh'); }