[Moscow.pm] Удаленный запуск скрипта через web

Dmitry E. Oboukhov unera на debian.org
Вт Ноя 25 06:04:30 PST 2008


b> Привет.

b> Столкнулся с такой задачей: есть веб
b> сервер, в cgi-bin есть perl скрипты - нужно из
b> одного сприпта запускать bash скрипт на
b> удаленной машине.

b> Я сходу могу предложить 2 решения:
b> 1. ssh
b> 1. удаленная машина по cron смотрит на http
b> флажок на web сервере (например) и если
b> обнаруживает флаг, то выполняет
b> необходимые действия.

b> Оба варианта меня мало устраивают =)

b> Однозначно это задача более чем
b> стандартная (просто я с ней в первый раз
b> столкнулся), вот вместо того, чтобы
b> искать решения в гугле, решил узнать у
b> вас.

b> Благодарен за любой совет =)

как-то задача непонятно поставлена

в чем проблема? в собственно запуске? или в запуске чего-то конкретного?

PS: я когда-то решал задачу запуска/останова некоего демона через вебморду.

делал примерно так:

писал функцию daemonize (можно взять стандартный пакет, но он мне что-то
не понравился), которая делает fork и setsid 0
а после нее в потомке exec, тогда после завершения CGI/апача демон не
прибивается

PS: не забыть только в этой функции закрыть/перенаправить stdin/stdout/stderr
и заодно сделать chdir /

то есть функция будет примерно такая:

use POSIX qw(setsid);
sub daemonize($;@)
{
	my ($command, @args)=@_;
	my $pid=fork;
	die "Can not fork: $!" unless defined $pid;
	return $pid if $pid;
	close STDIN;
	close STDOUT;
	close STDERR;
	chdir '/';
    setsid();
    exec $command, @args;
    die "Can not start $command: $!";
}

ну и pid надо помнить где-то в базе/файле на тот случай если проконтроллить 
надо будет или кильнуть.

sudo тут может помочь пускать что-то с правами НЕ вебсервера, правда 
возможность кильнуть тогда придется реализовывать опять же через sudo

в sudo прописать если что-то NOPASSWD то оно пароль спрашивать не будет

правда это дыра, но если команды конкретные прописать и не более того,
то это эквивалентно будет твоему варианту "машина по cron смотрит на http"

ssh при необходимости тоже настраивается по ключам :)

--
... mpd is off

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera на debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081125/02b29fd3/attachment-0001.bin>


Подробная информация о списке рассылки Moscow-pm