Pergunta

Eu quero instalar o java em muitos computadores usando ssh, então eu quero escrever um script que irá fazer (aproximadamente):

for c in computers
do    
   scp jre--.rpm $c
   ssh $c 'sudu -s; chmod a+x jre--.rpm ; ./jre--.rpm; echo "success!"'
done

O problema é que durante a instalação do java que eu preciso "ler" o aviso prévio e digite "sim" no final. Como eu faço isso? Existe uma maneira mais fácil do que "espera"? E se não como eu encaixá-lo no script bash?

muito obrigado

Foi útil?

Solução 2

esperar é o caminho a percorrer (graças http://www.dnmouse.org/java.html ):

   for c in computers
   do    
       scp jre--.rpm $c
       ssh -t $c 'sudo -s; yum -y install expect; sudo chmod a+x jre--.rpm'
       ssh -t $c '/usr/bin/expect -c \
       "set timeout -1; spawn ./jre-6u13-linux-x64-rpm.bin; sleep 1; send -- q\r; sleep 1; send -- yes\r; expect eof"
       echo "success!"'
   done

Outras dicas

Em primeiro lugar, registrar as teclas necessárias para um arquivo como este:

cat > keystrokes

Hit Ctrl + C quando você está teclas digitadas gravação feito. Verifique o conteúdo do arquivo. Algumas teclas como TAB pode não registrar corretamente, mas você ainda pode editar o arquivo com um editor de texto. Note-se que a rolagem para baixo em um console (por exemplo, ao ler a saída de more) geralmente pode ser feito com a barra de espaço.

Você pode scp este arquivo como você já faz com o rpm. Em seguida, encaminhar o conteúdo do arquivo de teclas para a entrada padrão do instalador:

cat keystrokes | ./someinstaller

Editar: Lamento saber que não funciona. Talvez você pode dar uma olhada em esperar , que é uma ferramenta Unix projetado para esse tipo de coisa . Eu acho que está incluído na maioria dos GNU / Linux distribuições. Se você está familiarizado com python você pode preferir pexpect .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top