URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7026
[ Назад ]

Исходное сообщение
"Перезагрузка FreeBSD скриптом на PHP/Perl"

Отправлено netop , 12-Дек-07 11:58 
Подкиньте пожалуйста примерчик скрипта для перезагрузки (reboot) сервера на FreeBSD.

Чтобы можно было запустить его через Апач (http://192.168.1.1/cgi-bin/reboot.pl) и сервер перезагрузился!


Содержание

Сообщения в этом обсуждении
"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено Аноним , 12-Дек-07 17:02 
sh:
#!/bin/sh
sudo shutdown -r now

perl:
#!/usr/bin/perl
system("sudo shutdown -r now");

для php аналогично. sudo настроить соответствующим образом для NOPASSWD:


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено netop , 12-Дек-07 17:59 
>sh:
>#!/bin/sh
>sudo shutdown -r now
>
>perl:
>#!/usr/bin/perl
>system("sudo shutdown -r now");
>
>для php аналогично. sudo настроить соответствующим образом для NOPASSWD:

Спасибо!!! А в Perl нужно что-то в конфиге подбавить или в Апаче?
Че-то не хочет он :(
Пробую даже обычный скрипт запустить (кладу в эту-же папку): system("/var/htdocs/cgi-bin/script2.pl");

Выдает:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Че это может быть?


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено Michelnok , 12-Дек-07 19:02 
>
>Internal Server Error
>
>Че это может быть?

А у меня вот компьютер не работает. Что это может быть?


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено Kavkaz , 12-Дек-07 21:08 

>Че это может быть?

почитайте немого про  GGI на perl .
вероятнее всего у вас не выставлены права на скрипт( поставьте 755)


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено angra , 12-Дек-07 23:51 
>почитайте немого про  GGI на perl .

Могу рекомендовать вам то же самое
>вероятнее всего у вас не выставлены права на скрипт( поставьте 755)

Это конечно тоже нужно, вот только без execute bit ошибку выдаст 403, а не 500. 500 в данном случае возникает из-зи того что скрипт не выдает никаких хедеров. Нужно добавить в скрипт
print "Content-type: text/html\n\n";
Ну а для исходной задачи желательно все-таки настроить sudo для пользовтаеля apache или поставит suid bit



"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено netop , 13-Дек-07 09:50 
>Нужно добавить в скрипт
>print "Content-type: text/html\n\n";

Спасибо, хэдеры помогли, я о них почему-то совсем забыл!
Скрипт выводит все нормально, но вот дочерний - всеравно не запускает :(

Сделал для примера:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
system("perl /var/htdocs/cgi-bin/lightparser.pl");
print "success";

Выводит сообщение, но вот lightparser не запускается :(

Можно подробней о suid bit, может в нем проблема?
sudo уже качаю сегодня попробую поставить!


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено andy , 13-Дек-07 11:04 
>[оверквотинг удален]
>
>
>Сделал для примера:
>
>#!/usr/bin/perl
>print "Content-type: text/html\n\n";
>system("perl /var/htdocs/cgi-bin/lightparser.pl");
>print "success";
>
>Выводит сообщение, но вот lightparser не запускается :(

1. посмотри в error.log апача
2. Посмотри, что находится в $ENV{PATH}, когда программа запускается через CGI. Возможно, нужно прописать полный путь до программы


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено netop , 13-Дек-07 17:55 
Всем спасибо !!! Все получилось!!!

system("/usr/local/bin/sudo /sbin/reboot");

В настройках sudo разрешаем юзеру nobody - /sbin/reboot
nobody    ALL=NOPASSWD:/sbin/reboot


"Перезагрузка FreeBSD скриптом на PHP/Perl"
Отправлено phpcoder , 13-Дек-07 10:13 
>sh:
>#!/bin/sh
>sudo shutdown -r now

Лучше exec sudo shutdown -r now :)