O aplicativo de linha de comando srvrmgr.exe nunca foi lá de muito sucesso com o Siebel. Mas qualquer SADMIN com algum tempo de experiência acaba descobrindo na marra que a interface gráfica tem suas limitações e o srvrmgr é um excelente complemento para ela.
Uma das utilizações mais óbvias do srvrmgr é quando o AOM utilizado no servidor está fora do ar e você não tem um cliente dedicado configurado. Outro uso é para automatizar tarefas, mas isso é um assunto para outro dia.
A dica que vou escrever aqui hoje é sobre o uso interativo do srvrmgr. Estou assumindo que você está usando Windows. Se você está usando Linux (algum outro UNIX like), por favor me avise para aonde eu mando meu currículo porque eu não aguento mais trabalhar com Siebel em Windows. :-D
Em primeiro lugar, vamos falar de configuração de codificação de caracteres. Suponhamos que seu sistema tenha configurado a aplicação em PTB (Português do Brasil) e você roda um simples list comp no srvrmgr:
srvrmgr> list comp
CC_ALIAS CC_NAME CG_ALIAS CC_RUNMODE CP_DISP_RUN_STATE
----------------- ------------------------------------ ------------ ----------- -----------------
ClientAdmin Client Administration System Background Ativado
CommConfigMgr Communications Configuration Manager CommMgmt Batch Ativado
CommOutboundMgr Communications Outbound Manager CommMgmt Batch Ativado
CommSessionMgr Communications Session Manager CommMgmt Batch Ativado
DbXtract Database Extract Remote Batch Ativado
EAIObjMgr_enu EAI Object Manager (ENU) EAI Interactive Ativado
MailMgr Email Manager CommMgmt Background Ativado
EIM Enterprise Integration Mgr EAI Batch Ativado
FSMSrvr File System Manager System Batch Ativado
GenNewDb Generate New Database Remote Batch Ativado
GenTrig Generate Triggers Workflow Batch Ativado
PageMgr Page Manager CommMgmt Background Ativado
PDbXtract Parallel Database Extract Remote Batch Em execuþÒo
RepAgent Replication Agent Remote Background Ativado
ServerMgr Server Manager System Interactive Em execuþÒo
SRBroker Server Request Broker System Interactive Em execuþÒo
SRProc Server Request Processor System Interactive Em execuþÒo
SynchMgr Synchronization Manager Remote Interactive Ativado
TxnMerge Transaction Merger Remote Background Em execuþÒo
TxnProc Transaction Processor Remote Background Em execuþÒo
TxnRoute Transaction Router Remote Background Em execuþÒo
UpgKitBldr Upgrade Kit Builder SiebAnywhere Batch Ativado
WorkActn Workflow Action Agent Workflow Background Ativado
WorkMon Workflow Monitor Agent Workflow Background Ativado
WfProcBatchMgr Workflow Process Batch Manager Workflow Batch Ativado
WfProcMgr Workflow Process Manager Workflow Batch Ativado
ePharmaObjMgr_enu ePharma Object Manager (ENU) LifeSciences Interactive Ativado
ePharmaObjMgr_esn ePharma Object Manager (ESN) LifeSciences Interactive Ativado
ePharmaObjMgr_ptb ePharma Object Manager (PTB) LifeSciences Interactive Ativado
CC_ALIAS CC_NAME CG_ALIAS CC_RUNMODE CP_DISP_RUN_STATE
----------------- ------------------------------------ ------------ ----------- -----------------
ClientAdmin Client Administration System Background Ativado
CommConfigMgr Communications Configuration Manager CommMgmt Batch Ativado
CommOutboundMgr Communications Outbound Manager CommMgmt Batch Ativado
CommSessionMgr Communications Session Manager CommMgmt Batch Ativado
DbXtract Database Extract Remote Batch Ativado
EAIObjMgr_enu EAI Object Manager (ENU) EAI Interactive Ativado
MailMgr Email Manager CommMgmt Background Ativado
EIM Enterprise Integration Mgr EAI Batch Ativado
FSMSrvr File System Manager System Batch Ativado
GenNewDb Generate New Database Remote Batch Ativado
GenTrig Generate Triggers Workflow Batch Ativado
PageMgr Page Manager CommMgmt Background Ativado
PDbXtract Parallel Database Extract Remote Batch Em execuþÒo
RepAgent Replication Agent Remote Background Ativado
ServerMgr Server Manager System Interactive Em execuþÒo
SRBroker Server Request Broker System Interactive Em execuþÒo
SRProc Server Request Processor System Interactive Em execuþÒo
SynchMgr Synchronization Manager Remote Interactive Ativado
TxnMerge Transaction Merger Remote Background Em execuþÒo
TxnProc Transaction Processor Remote Background Em execuþÒo
TxnRoute Transaction Router Remote Background Em execuþÒo
UpgKitBldr Upgrade Kit Builder SiebAnywhere Batch Ativado
WorkActn Workflow Action Agent Workflow Background Ativado
WorkMon Workflow Monitor Agent Workflow Background Ativado
WfProcBatchMgr Workflow Process Batch Manager Workflow Batch Ativado
WfProcMgr Workflow Process Manager Workflow Batch Ativado
ePharmaObjMgr_enu ePharma Object Manager (ENU) LifeSciences Interactive Ativado
ePharmaObjMgr_esn ePharma Object Manager (ESN) LifeSciences Interactive Ativado
ePharmaObjMgr_ptb ePharma Object Manager (PTB) LifeSciences Interactive Ativado
Tudo certo, exceto pelos caracteres esquisitos. Bem, o problema é a codificação de página padrão do prompt de comando do Windows. A codificação ativa padrão é 850 e isso não ajuda muito com caracteres acentuados da língua portuguesa. Para mudar isto, basta usar o comando chcp no CMD.exe com a opção 1252:
I:\>chcp 1252
Active code page: 1252
Isso resolverá seus problemas com codificações de página. Se você tiver saída com alguma outra configuração exótica, pesquise sobre o assunto para conseguir visualizar a saída do programa de forma adequada. Claro que ficar digitando isso toda santa vez vai ser trabalhoso, mas nada que criar um script para lhe ajudar a fazer isto (você está usando um script, não? Por favor não me diga que você digita todos aqueles parâmetros toda hora!).
A outra questão é trabalhar com senha: se você precisa utilizar um login e senha para se autenticar no srvrmgr é sempre uma boa idéia se preocupar como utilizar sua senha. Salvar em um script não é legal e digitar no terminal também não, afinal papagaio de pirata também é uma falha de segurança!
Existem diversas formas de resolver isto, mas o melhor é desabilitar o ECHO ao se digitar no terminal. Isso pode ser feito de diversas formas (vide sua linguagem de programação favorita). Eu, por exemplo, criei o script em Perl abaixo para fazer isto pra mim:
use warnings;
use strict;
use Term::ReadKey qw(ReadMode);
use Win32::Process;
my $server = '';
my $gateway = '';
my $enterprise = '';
my $user = '';
my $srvrmgr = 'sea752\\client\\BIN\\srvrmgr.exe';
system('chcp 1252');
print 'Type your password to connect to Siebel Server: ';
ReadMode(2);
my $password = <STDIN>;
ReadMode(0);
chomp($password);
print "\n\n";
my $process;
Win32::Process::Create( $process, $srvrmgr,
"srvrmgr /e $enterprise /g $gateway /u $user /p $password",
0, NORMAL_PRIORITY_CLASS, '.' )
or die errorReport();
$process->Wait(10);
sub errorReport {
print Win32::FormatMessage( Win32::GetLastError() );
}
use strict;
use Term::ReadKey qw(ReadMode);
use Win32::Process;
my $server = '';
my $gateway = '';
my $enterprise = '';
my $user = '';
my $srvrmgr = 'sea752\\client\\BIN\\srvrmgr.exe';
system('chcp 1252');
print 'Type your password to connect to Siebel Server: ';
ReadMode(2);
my $password = <STDIN>;
ReadMode(0);
chomp($password);
print "\n\n";
my $process;
Win32::Process::Create( $process, $srvrmgr,
"srvrmgr /e $enterprise /g $gateway /u $user /p $password",
0, NORMAL_PRIORITY_CLASS, '.' )
or die errorReport();
$process->Wait(10);
sub errorReport {
print Win32::FormatMessage( Win32::GetLastError() );
}
Assim a vida fica mais fácil!
Vale lembrar que se você utilizar a função spool do srvrmgr, ela provavelmente vai assumir a codificação do seu banco de dados (não tenho certeza disto, mas meu banco é UTF-8 e a saída salva tem a mesma codificação de dados).
Olá Alceu,
ResponderExcluirFicou legal esse artigo.
Lembrei dos velhos tempos.
Tirando o script Perl... Lógico. ;-)
[]'s,
Guilherme
Guilherme, se você fizer algo parecido em Ruby eu prometo que incluo na postagem! :-D
ResponderExcluir