Precisa passar argumentos no script adcfgclone.pl

Precisa passar argumentos no script adcfgclone.pl

Eu só queria saber se existe alguma maneira de passar os argumentos no script perl( adcfgclone.pl) durante o tempo de compilação (ou seja, os valores não devem ser solicitados durante o tempo de execução do script)

Abaixo está um exemplo de que estou passando os valores após executar o script.

Forneça os valores necessários para a criação do novo arquivo de contexto APPL_TOP.

Target System Hostname (virtual or normal) [proddb] :
Target Instance is RAC (y/n) [n] : n    
Target System Database SID : proddb1    
Target System Base Directory : /d06/oravis    
Target System utl_file_dir Directory List : /usr/tmp    
Number of DATA_TOP's on the Target System [1] : 1    
Target System DATA_TOP Directory 1 [/d01/oravsn12/db/apps_st/data] : /d06/oravis/db/apps_st/data    
Target System RDBMS ORACLE_HOME Directory [/d06/oravis/db/tech_st/10.2.0] : /d06/oravis/db/tech_st/10.2.0    
Do you want to preserve the Display [null] (y/n) ? : n    
Target System Display [sharkap:0.0] :    
Target System Port Pool [0-99] : 34

Nota: estou inserindo todos os valores acima durante o tempo de execução do script, então apenas passo todos esses argumentos em um arquivo e executo o adcfgclone.plscript.

Responder1

Perfeitamente honesto, não sei se é exatamente isso que você deseja. Toda essa coisa de tempo de compilação/tempo de execução do Perl é um pouco confusa para mim.

Você pode tentar o autoexpect (incluído no pacote expect). Inicialmente, você deve executar seu aplicativo Perl através do autoexpect, respondendo às entradas. Mas depois disso, você só precisa executar o script de saída gerado pelo autoexpect, que preenche todas as entradas.

gato expect-test.pl

#!/bin/perl

use warnings;
use strict;

print "Enter your input: ";
my $input = <STDIN>;
chomp $input;
print "You typed: $input\n";

autoexpect -f expect-test.exp ./expect-test.pl
autoexpect started, file is expect-test.exp
Enter your input: bob 
You typed: bob
autoexpect done, file is expect-test.exp

./expect-test.exp
spawn ./expect-test.pl
Enter your input: bob 
You typed: bob

Ou, mais simplesmente, você também pode tentar redirecionar seu arquivo de entrada para o seu script perl:

cat input.text 
bart

./expect-test.pl < input.text 
Enter your input: You typed: bart

Responder2

Provavelmente um pouco atrasado para o OP, mas ainda relevante se alguém tiver a mesma pergunta. Basicamente, todas as respostas a essas perguntas estão em um arquivo chamado arquivo de contexto. Depois de definir o ambiente do Apps, o arquivo de contexto estará no formato ${CONTEXT_FILE}. Então, executando:

perl adcfgclone.pl appsTier "$CONTEXT_FILE"

você só será solicitado a senha do Apps.

informação relacionada