Страница 1 из 1

как из PHP запустить скрипт bash ?

Добавлено: Пн июн 22, 2015 4:00 pm
gagarin74
скрипт лежит в var\www\ok.sh

как его запустить из под PHP?



сам написал -сам и ответил

shell_exec("cd /var/www && ./ok.sh");

Re: как из PHP запустить скрипт bash ?

Добавлено: Чт ноя 26, 2015 9:48 pm
Ko/|xo3HUk
Подскажите - почему скрипт не запускается?
Создал сценарий FullBackup:

Код: Выделить всё

echo shell_exec('sudo /var/www/scripts/FullBackup.sh'); 
Запускаю его - реакции ноль. Запускаю в консоли МЖД - ошибка:
"Parse error: syntax error, unexpected '/' in /var/www/modules/inc_panel_ajax.php(17) : eval()'d code on line 1"
СпойлерПоказать
error.png
error.png (10.39 КБ) 9724 просмотра
Хотя напрямую в shell всё отлично запускается. Права доступа и на запуск скрипта - есть.
СпойлерПоказать

Код: Выделить всё

pi@raspberrypi /var/backups $ cd /var/www/scripts/
pi@raspberrypi /var/www/scripts $ ls -l
total 180
........
-rwxrwxrwx 1 pi       pi        1529 Nov 26 23:24 FullBackup.sh
........
 

Re: как из PHP запустить скрипт bash ?

Добавлено: Сб ноя 28, 2015 10:02 am
savenko_egor
Ko/|xo3HUk писал(а):Подскажите - почему скрипт не запускается?
А зачем у Вас "echo" стоит перед "shell_exec"? Так не должно быть. Просто укажите "shell_exec('sudo /var/www/scripts/FullBackup.sh');"
Попробуйте такПоказать
test.jpg
test.jpg (38.64 КБ) 9684 просмотра
Ну и плюс у меня вызывает сомнение "sudo" перед этим всем. По идее он же должен пароль запрашивать для "sudo".

Re: как из PHP запустить скрипт bash ?

Добавлено: Сб ноя 28, 2015 10:42 am
Amarok
а без sudo вообще никак?(

Re: как из PHP запустить скрипт bash ?

Добавлено: Сб ноя 28, 2015 11:55 am
Ko/|xo3HUk
Попробовал без "echo", но с "sudo" - не работает ни "Запуск по ссылке: http://192.168.1.69:80/objects/?script=FullBackup", ни "Через командную строку: /var/www\obj.bat script:FullBackup".
СпойлерПоказать
wo_echo.png
wo_echo.png (44.21 КБ) 9661 просмотр
Убрал и "echo" и "sudo" - заработало только через "Запуск по ссылке: http://192.168.1.69:80/objects/?script=FullBackup". "Через командную строку: /var/www\obj.bat script:FullBackup" - никак не хочет.
СпойлерПоказать
wo_echo_sudo.png
wo_echo_sudo.png (47.82 КБ) 9661 просмотр
Ну да ладно, хватит и запуска по ссылке!
Ещё вопрос - запуск скрипта "Через командную строку" - это должно выполняться через консоль МЖД?
СпойлерПоказать
cobsole.png
cobsole.png (71.98 КБ) 9661 просмотр
Потому как ни через консоль, ни через putty строка "/var/www\obj.bat script:FullBackup" не работает.
И ещё вопрос - как-то можно проинформировать - корректно ли завершился скрипт? Например, если присутствуют слова "Operation not permitted" в выводе этого скрипта? Может можно вывести весь вывод скрипта на страницу или произвести проверку в скрипте на отсутствие ключевых слов и сообщить об этом? (например: "echo "Выполнение скрипта завершено!";")

Re: как из PHP запустить скрипт bash ?

Добавлено: Сб ноя 28, 2015 12:36 pm
savenko_egor
На сколько я знаю, батники в Linux не работают. Так как замена батникам на Linux - это BASH. Так-что Вы не запустите данную команду на Вашем сервере.
Информировать только выводом. И для того что бы это вывод Вам потом увидеть, делайте его в файл и считывайте потом это файл.

И зачем в МЖД консоль, я сам так и не понял. Да и не особо стремился понять))

Re: как из PHP запустить скрипт bash ?

Добавлено: Сб ноя 28, 2015 3:30 pm
Ko/|xo3HUk
А я чего-то даже внимания не обратил что расширение *.bat стоит :)
Да, посмотрел этот батник - и вправду - на линуксе не заработает :lol:

Код: Выделить всё

@echo off
set MIBDIRS=C:\_majordomo\server\php\Extras\mibs
c:
cd /d \_majordomo\htdocs\objects
..\..\server\php\php.exe index.php %1 %2 %3 %4 %5 %6 %7 %8 %9>>log.txt
И ещё печально что sudo в скриптах не работает :( Причём в putty пишу sudo - без проблем работает, даже пароль не спрашивает. А от какого юзера скрипты выполняются в МЖД? (в putty - от "pi").

Re: как из PHP запустить скрипт bash ?

Добавлено: Вс ноя 29, 2015 11:37 am
TimonDK
Ko/|xo3HUk писал(а): И ещё печально что sudo в скриптах не работает :( Причём в putty пишу sudo - без проблем работает, даже пароль не спрашивает. А от какого юзера скрипты выполняются в МЖД? (в putty - от "pi").
Посмотри описание sudoers.
Надо пользователя добавить в группу sudo (если не добавлен)
sudo gpasswd -a vasili_pupkin sudo
А потом в sudoers указать, что у пользователя пароль не спрашивать
vasili_pupkin ALL =(ALL)       NOPASSWD: ALL

Отправлено с моего ZP998 через Tapatalk

Re: как из PHP запустить скрипт bash ?

Добавлено: Вс ноя 29, 2015 4:33 pm
Ko/|xo3HUk
Да, спасибо. Давным-давно пользовался этим, начинаю забывать уже :D Меня смутило что в консоли putty - sudo работает без проблем, а в скриптах - нет. Значит для юзера "pi" это прописано уже, а скрипты от имени другого юзера запускаются.

P.S. посмотрел /etc/sudoers:
СпойлерПоказать

Код: Выделить всё

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL

# restart cycles of MajorDoMo
www-data ALL=(root) NOPASSWD: /var/www/restart.sh
- так и есть - для "pi" - всё разрешено, а скрипты видимо от "www-data" запускаются.