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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
gagarin74
Сообщения: 331
Зарегистрирован: Пн апр 06, 2015 9:51 am
Благодарил (а): 37 раз
Поблагодарили: 22 раза

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

Сообщение gagarin74 » Пн июн 22, 2015 4:00 pm

скрипт лежит в var\www\ok.sh

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



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

shell_exec("cd /var/www && ./ok.sh");
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

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

Сообщение Ko/|xo3HUk » Чт ноя 26, 2015 9:48 pm

Подскажите - почему скрипт не запускается?
Создал сценарий 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 КБ) 9723 просмотра
Хотя напрямую в 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
........
 
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

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

Сообщение savenko_egor » Сб ноя 28, 2015 10:02 am

Ko/|xo3HUk писал(а):Подскажите - почему скрипт не запускается?
А зачем у Вас "echo" стоит перед "shell_exec"? Так не должно быть. Просто укажите "shell_exec('sudo /var/www/scripts/FullBackup.sh');"
Попробуйте такПоказать
test.jpg
test.jpg (38.64 КБ) 9683 просмотра
Ну и плюс у меня вызывает сомнение "sudo" перед этим всем. По идее он же должен пароль запрашивать для "sudo".
За это сообщение автора savenko_egor поблагодарили (всего 2):
Ko/|xo3HUk (Сб ноя 28, 2015 11:43 am) • mirsum (Вт дек 01, 2015 10:21 pm)
Рейтинг: 2.33%
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

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

Сообщение Amarok » Сб ноя 28, 2015 10:42 am

а без sudo вообще никак?(
Моя Алиска живёт на Proxmox в Debian 12
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

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

Сообщение Ko/|xo3HUk » Сб ноя 28, 2015 11:55 am

Попробовал без "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 КБ) 9660 просмотров
Убрал и "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 КБ) 9660 просмотров
Ну да ладно, хватит и запуска по ссылке!
Ещё вопрос - запуск скрипта "Через командную строку" - это должно выполняться через консоль МЖД?
СпойлерПоказать
cobsole.png
cobsole.png (71.98 КБ) 9660 просмотров
Потому как ни через консоль, ни через putty строка "/var/www\obj.bat script:FullBackup" не работает.
И ещё вопрос - как-то можно проинформировать - корректно ли завершился скрипт? Например, если присутствуют слова "Operation not permitted" в выводе этого скрипта? Может можно вывести весь вывод скрипта на страницу или произвести проверку в скрипте на отсутствие ключевых слов и сообщить об этом? (например: "echo "Выполнение скрипта завершено!";")
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

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

Сообщение savenko_egor » Сб ноя 28, 2015 12:36 pm

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

И зачем в МЖД консоль, я сам так и не понял. Да и не особо стремился понять))
За это сообщение автора savenko_egor поблагодарил:
Ko/|xo3HUk (Сб ноя 28, 2015 3:26 pm)
Рейтинг: 1.16%
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

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

Сообщение Ko/|xo3HUk » Сб ноя 28, 2015 3:30 pm

А я чего-то даже внимания не обратил что расширение *.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").
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Аватара пользователя
TimonDK
Сообщения: 27
Зарегистрирован: Вт июл 14, 2015 9:00 pm
Откуда: Саратов
Благодарил (а): 10 раз
Поблагодарили: 7 раз
Контактная информация:

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

Сообщение TimonDK » Вс ноя 29, 2015 11:37 am

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

Отправлено с моего ZP998 через Tapatalk
За это сообщение автора TimonDK поблагодарили (всего 2):
Amarok (Вс ноя 29, 2015 11:41 am) • Ko/|xo3HUk (Вс ноя 29, 2015 4:28 pm)
Рейтинг: 2.33%
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

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

Сообщение Ko/|xo3HUk » Вс ноя 29, 2015 4:33 pm

Да, спасибо. Давным-давно пользовался этим, начинаю забывать уже :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" запускаются.
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ответить