Подкиньте пожалуйста примерчик скрипта для перезагрузки (reboot) сервера на FreeBSD.Чтобы можно было запустить его через Апач (http://192.168.1.1/cgi-bin/reboot.pl) и сервер перезагрузился!
sh:
#!/bin/sh
sudo shutdown -r nowperl:
#!/usr/bin/perl
system("sudo shutdown -r now");для php аналогично. sudo настроить соответствующим образом для NOPASSWD:
>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.Че это может быть?
>
>Internal Server Error
>
>Че это может быть?А у меня вот компьютер не работает. Что это может быть?
>Че это может быть?почитайте немого про GGI на perl .
вероятнее всего у вас не выставлены права на скрипт( поставьте 755)
>почитайте немого про GGI на perl .Могу рекомендовать вам то же самое
>вероятнее всего у вас не выставлены права на скрипт( поставьте 755)Это конечно тоже нужно, вот только без execute bit ошибку выдаст 403, а не 500. 500 в данном случае возникает из-зи того что скрипт не выдает никаких хедеров. Нужно добавить в скрипт
print "Content-type: text/html\n\n";
Ну а для исходной задачи желательно все-таки настроить sudo для пользовтаеля apache или поставит suid bit
>Нужно добавить в скрипт
>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 уже качаю сегодня попробую поставить!
>[оверквотинг удален]
>
>
>Сделал для примера:
>
>#!/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. Возможно, нужно прописать полный путь до программы
Всем спасибо !!! Все получилось!!!system("/usr/local/bin/sudo /sbin/reboot");
В настройках sudo разрешаем юзеру nobody - /sbin/reboot
nobody ALL=NOPASSWD:/sbin/reboot
>sh:
>#!/bin/sh
>sudo shutdown -r nowЛучше exec sudo shutdown -r now :)