Pregunta

Quiero instalar java en muchos ordenadores a través de SSH, así que quiero escribir un script bash que va a hacer (más o menos):

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 que necesito para "leer" la notificación y el tipo "sí" al final. ¿Cómo lo hago? ¿Existe una manera más fácil que "espera"? Y si no cómo encajo en la escritura del golpe?

muchas gracias

¿Fue útil?

Solución 2

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

Otros consejos

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

cat > keystrokes

Presione Ctrl + C cuando haya terminado la grabación de pulsaciones de teclas. Compruebe el contenido del archivo. Algunas claves como TAB pueden no registrar correctamente pero todavía se puede editar el archivo con un editor de texto. Tenga en cuenta que el desplazamiento hacia abajo en una consola (por ejemplo, cuando la salida de more lectura) por lo general se puede hacer con la barra espaciadora.

Puede scp este archivo como ya lo hacen con el número de revoluciones. A continuación, el contenido del tubo de las pulsaciones de teclado archivo a la entrada estándar del instalador:

cat keystrokes | ./someinstaller

editar Lamento escuchar que no funciona. Tal vez se puede echar un vistazo a esperar , que es una herramienta de Unix diseñado para este tipo de cosas . Creo que se incluye en la mayoría GNU / Linux distribuciones. Si está familiarizado con el pitón es posible que prefiera pexpect lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top