2009-09-30 12 views
5

Quiero instalar java en muchos ordenadores utilizando ssh por lo que quiero escribir un script bash que va a hacer (más o menos):Instalación de Java en Linux a través de SSH

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

El problema es que durante la instalación de Java I necesita "leer" el aviso y escribir "sí" al final. ¿Cómo lo hago? ¿Hay una manera más fácil que "esperar"? Y si no, ¿cómo encajarlo en el script bash?

muchas gracias

Respuesta

1

esperar es el camino a seguir (gracias 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 
1
+0

estoy usando sombrero rojo - solamente "yum install" y de que se instale el java abierto que no tiene ningún valor – Guy

+0

Al parecer hay un archivo que puede cree que cuando esté presente omitirá la aceptación del EULA, no tiene idea de qué archivo, pero podría ser útil. – rajax

+0

que suena exactamente como lo que necesito, ¿alguna pista sobre cómo crearlo? – Guy

2

En primer lugar, registrar las pulsaciones de teclas necesarias en un archivo de la siguiente manera:

cat > keystrokes 

pulse Ctrl + C cuando se' He terminado de grabar las pulsaciones de teclas. Verifique el contenido del archivo. Es posible que algunas teclas como TAB no graben correctamente, pero aún así puede editar el archivo con un editor de texto. Tenga en cuenta que desplazarse hacia abajo en una consola (por ejemplo, al leer la salida de more) normalmente se puede hacer con la barra espaciadora.

Puede copiar este archivo como ya hace con las rpm. A continuación, el contenido del tubo de las pulsaciones de teclado archivo a la entrada estándar del instalador:

cat keystrokes | ./someinstaller 

edición: Siento lo que no funciona. Tal vez pueda echar un vistazo al expect, que es una herramienta de Unix diseñada para este tipo de cosas. Creo que está incluido en la mayoría de las distribuciones gnu/linux. Si está familiarizado con Python, puede preferir pexpect en su lugar.

+0

Esto casi funciona, pero no del todo. Parece que la entrada solo se escucha después de presionar manualmente la BARRA ESPACIADORA. – Guy

+0

lo intenté también - no funciona – Guy

Cuestiones relacionadas