Как запустить сценарии perl (через BAT-файл) на сервере, отличном от того, на котором я работаю? - PullRequest
3 голосов
/ 08 февраля 2012

На сервере Windows у меня есть много Perl-скриптов, которые вставляют данные в базу данных sqlserver.Они вызываются через задания агента sql, которые запускают файлы .bat

Все сосуществует на одном компьютере \\ oldserver

Изменения в политике компании требуют, чтобы я разделил систему, чтобы база данных былана \\ dbserver и интерпретаторе perl, сценарии и вспомогательные файлы все живут на \\ appserver

Что мне нужно сделать, чтобы отключить мой sql-агент на базе \\ dbserver.файлы bat на \\ appserver, поэтому каждый файл bat работает так, как если бы он был запущен на \\ appserver ?(т.е. используя perl, установленный на \\ appserver, имеет доступ к настройкам среды \\ appserver windows, таким как PERL5LIB и т. д.)?


Каждый BAT-файл выглядит примерно так:

@echo off
d:
cd project\foo\scripts\myscript.pl

Каждый скрипт на Perl выглядит примерно так:

#!/perl/bin
use warnings;
use inHouseLibrary; # via PERL5LIB Env variable on \\\appserver
#[snip]

my $incoming = <path to local folder>;
my $archive  = <path to some other local folder>;

my $config;
$config = do $config_file or die;

foreach my $file ( <files in local folder>){
   #do database-related stuff involving the contents of the file
   File::Copy->move($file, $archive . $file);
}

(я знаю о нарушении DRY Принцип . Это просто долг, который я должен нести прямо сейчас)


В случае, если это актуально:

  • \\ dbserver имеет SqlServer 9.0 (2005)
  • \\ appserver имеет activestate perl v5.10.1 MSWin32-x86-multithread
  • Обе машины имеют Windows Server 2008 R2 Standard

1 Ответ

2 голосов
/ 08 февраля 2012

Это можно сделать с помощью Windows Remote Shell или Windows Powershell, или вы можете использовать SSH.

С SSH синтаксис будет:

    ssh login@hostname '<command>'

Учебник по Windows PowerShell находится здесь:

http://technet.microsoft.com/en-us/magazine/ff700227.aspx

Существует также утилита, включенная в sysinternals, которая называется PsExec и которая может оказаться полезной, расположенной здесь:

http://technet.microsoft.com/en-us/sysinternals/bb897553

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...